public IEnumerable <TreeDataView> GetModuleTree() { List <TreeDataView> moList = _platformDomain.ModuleSet.Select(t => new TreeDataView { Id = t.Fid.ToString(), Pid = t.Pid, Text = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Module, t.Fid), Icon = (t.Icon.IsMissing() ? "icon-folder green ace-icon fa fa-leaf" : "icon-folder green ace-icon " + t.Icon) }).ToList <TreeDataView>(); List <TreeDataView> tree = new List <TreeDataView>(); TreeDataView treeRoot = new TreeDataView() { Id = "0", Text = _multiLangService.GetOrAndMultiLangValue(MultiLanguageOriginEnum.Page, "page_module_rootname", "系统模块"), State = new NodeState { Opened = true }, Icon = "icon-folder purple ace-icon fa fa-home bigger-160", }; tree.Add(treeRoot); TreeViewHelper.MakeTree(treeRoot.Children, moList, treeRoot.Id); return(tree); }
public override string ToString() { StringBuilder sb = new StringBuilder(); sb.AppendLine(" <div class=\"profile-info-row\">"); string require = string.Empty; if (CurrFapColumn.NullAble == 0) { require = "<span class=\"text-danger\">*</span>"; } sb.AppendFormat(" <div class=\"profile-info-name\"> {0} {1}</div>", _multiLang.GetMultiLangValue(MultiLanguageOriginEnum.FapColumn, $"{CurrFapColumn.TableName}_{CurrFapColumn.ColName}"), require).AppendLine(); sb.AppendLine(" <div class=\"profile-info-value\">"); if (CurrFapColumn.EditAble == 1) { if (CurrFapColumn.CtrlType == FapColumn.CTRL_TYPE_MEMO) { sb.AppendFormat(" <span class=\"editable\" id=\"{0}\">{1}</span>", CurrFapColumn.ColName, FieldValue).AppendLine(); } else { sb.AppendFormat(" <span class=\"editable\" id=\"{0}\"></span>", CurrFapColumn.ColName).AppendLine(); } } else { if (CurrFapColumn.CtrlType == FapColumn.CTRL_TYPE_REFERENCE) { string value = EntityData.Get(CurrFapColumn.TableName + "_" + CurrFapColumn.ColName + "MC"); if (value != null) { sb.AppendFormat(" <span class=\"editable\" >{0}</span>", value).AppendLine(); } else { sb.AppendLine(" <span class=\"editable\" ></span>"); } } else { sb.AppendFormat(" <span class=\"editable\" >{0}</span>", FieldValue).AppendLine(); } } sb.AppendLine(" </div>"); sb.AppendLine(" </div>"); return(sb.ToString()); }
protected string RenderJavascript() { StringBuilder script = new StringBuilder(); script.Append(" $(function () {").AppendLine(); //多语弹出框关闭 script.AppendLine(" $(\".multilangpopoverclose\").on(ace.click_event, function () { $(this).closest(\".popover\").css(\"display\",\"none\"); });"); //参照弹出事件、上传附件、数值控件 //开启textarea 校验 bool hasTextArea = false; //开启jqueryvalidate校验的条件 bool needValidate = false; foreach (FapField field in formFields) { FapColumn column = field.CurrentColumn; if (column.ColName == "Id" || column.ColName == "Fid" || column.ShowAble == 0) { continue; } if (!hasTextArea && column.CtrlType == FapColumn.CTRL_TYPE_MEMO) { hasTextArea = true; } if (!needValidate && ((column.NullAble == 0 && column.ShowAble == 1) || column.RemoteChkURL.IsPresent())) { needValidate = true; } #region 日期 if (column.CtrlType == FapColumn.CTRL_TYPE_DATE) { string model = "0"; string dateFormat = column.DisplayFormat; string minDate = "1900-1-1"; string maxDate = "2999-12-12"; if (dateFormat.IsMissing()) { dateFormat = "yyyy-mm-dd"; model = "0"; } else if (dateFormat.Length > 4 && dateFormat.Length < 10) { dateFormat = "yyyy-mm"; model = "1"; } else { dateFormat = "yyyy"; model = "2"; } if (column.MinValue != 0) { minDate = DateTimeUtils.DateFormat(DateTime.Now.AddDays((double)column.MinValue)); } if (column.MaxValue != 0) { maxDate = DateTimeUtils.DateFormat(DateTime.Now.AddDays((double)column.MaxValue)); } if (dateFormat == "yyyy-mm-dd") { script.AppendLine(" $(\"###formid## #" + column.ColName + "\").scroller('destroy').scroller($.extend({preset:'date', minDate:moment('" + minDate + "').toDate(),maxDate:moment('" + maxDate + "').toDate()},{ theme: 'android-ics light', mode: 'scroller', display:'modal', lang: 'zh' }));"); } else { script.AppendLine("$(\"###formid## #" + column.ColName + "\").datePicker({ followOffset: [0, 24],onselect:function(date){ var formatDate = DatePicker.formatDate(date, '" + dateFormat + "');this.shell.val(formatDate).change(); return false;},minDate:'" + minDate + "',maxDate:'" + maxDate + "', altFormat:'" + dateFormat + "',showMode:" + model + " }).next().on(ace.click_event, function () {$(this).prev().focus(); });"); } } else if (column.CtrlType == FapColumn.CTRL_TYPE_DATETIME) { //moment.js的格式 //string format = column.DisplayFormat; //string startDate = "1900-1-1"; //string endDate = "2999-12-12"; //string startView = "2"; //if (column.MinValue.HasValue) //{ // startDate = DateTime.Now.AddDays((column.MinValue).ToDouble()).ToString(PublicUtils.DateFormat); //} //if (column.MaxValue.HasValue) //{ // endDate = DateTime.Now.AddDays((column.MaxValue).ToDouble()).ToString(PublicUtils.DateFormat); //} //if (format.IsMissing()) //{ // format = "yyyy-mm-dd hh:ii:ss"; //} //else if (format.EqualsWithIgnoreCase("HH:mm")) //{ // format = "hh:ii"; // startView = "0"; //} //script.AppendLine(" $(\"#" + column.ColName + "\").datetimepicker({ format:\"" + format + "\",startDate:'" + startDate + "',endDate:'" + endDate + "',startView:" + startView + ",todayBtn:true,todayHighlight:true, language: \"zh-CN\" }).next().on(ace.click_event, function () { $(this).prev().focus(); });"); string format = column.DisplayFormat; string startDate = "1900-1-1"; string endDate = "2999-12-12"; if (column.MinValue != 0) { startDate = DateTimeUtils.DateFormat(DateTime.Now.AddDays((double)column.MinValue)); } if (column.MaxValue != 0) { endDate = DateTimeUtils.DateFormat(DateTime.Now.AddDays((double)column.MaxValue)); } if (format.IsMissing()) { //format = "datetime"; //script.AppendLine("opt.datetime = { preset : 'datetime', minDate:moment('" + startDate + "').toDate(), maxDate: minDate:moment('" + endDate + "').toDate() , stepMinute: 5 };"); script.AppendLine(" $(\"###formid## #" + column.ColName + "\").scroller('destroy').scroller($.extend({ preset:'datetime', minDate:moment('" + startDate + "').toDate(), maxDate:moment('" + endDate + "').toDate() , stepMinute: 5 }, { theme:'android-ics light', mode: 'scroller', display:'modal', lang: 'zh' }));"); } else if (format.EqualsWithIgnoreCase("HH:mm")) { format = "time"; //script.AppendLine("opt.time = {preset : 'time'};"); script.AppendLine(" $(\"###formid## #" + column.ColName + "\").scroller('destroy').scroller($.extend({preset:'time'}, { theme: 'android-ics light', mode: 'scroller', display:'modal', lang: 'zh' }));"); } } #endregion #region 参照 else if (column.CtrlType == FapColumn.CTRL_TYPE_REFERENCE && !field.ReadOnly) { //去除自定义列 if (column.IsCustomColumn == 1) { continue; } //编码已经和地址一样了 string refUrl = column.RefType; //if (column.RefType == "GRID") //{ // refUrl = "GridReference"; //} //else if (column.RefType == "TREE") //{ // refUrl = "TreeReference"; //} //else //{ // refUrl = "TreeGridReference"; //} string dispalyName = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.FapColumn, $"{column.TableName}_{column.ColName}"); script.AppendLine("$(\"###formid## #" + column.ColName + "MC\").next().on(ace.click_event, function(){"); //script.AppendLine("//不可编辑字段不能弹出"); script.AppendLine(" if($(this).prev().attr(\"disabled\")==\"disabled\"){return;}"); //扩展参考值,参照参数用 script.AppendLine("var extra=[];"); //针对某些参照要用表单上的控件数据 if (column.RefCondition.IsPresent()) { //DeptUid='${DeptUid}',@后面为表单上的控件 string fieldName = ""; string pattern = FapPlatformConstants.VariablePattern; Regex regex = new Regex(pattern); var mat = regex.Matches(column.RefCondition); foreach (Match item in mat) { int length = item.ToString().Length - 3; fieldName = item.ToString().Substring(2, length); //fieldName = item.Groups[1].ToString(); FapColumn col = _fapColumns.FirstOrDefault(f => f.ColName.EqualsWithIgnoreCase(fieldName)); if (col != null) { script.AppendLine("var conv=$('#" + fieldName + "').val();if(conv==''){bootbox.alert('【" + _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.FapColumn, $"{col.TableName}_{col.ColName}") + "】为空,请先设置。');return;}"); script.AppendLine("extra.push('" + fieldName + "='+conv)"); } } } script.AppendLine("loadRefMessageBox('" + dispalyName + "','##formid##','" + column.Fid + "','" + column.ColName + "','" + refUrl + "',extra)"); script.AppendLine("});"); script.AppendLine("$(\"###formid## #" + column.ColName + "MC\").on(ace.click_event,function(e){$(this).next().trigger(ace.click_event);e.preventDefault();});"); } #endregion #region 附件 else if (column.CtrlType == FapColumn.CTRL_TYPE_FILE) { script.AppendLine("$(\"###formid## #file" + FormId + column.ColName + "\").on(ace.click_event, function () {"); string tempFid = UUIDUtils.Fid; if (field.FieldValue.ToString().IsMissing()) { field.FieldValue = tempFid; } script.AppendLine("loadFileMessageBox('" + tempFid + "','##formid##',initFile" + FormId.Replace('-', '_') + tempFid + ");"); script.AppendLine("});"); string allowExt = string.Empty; if (column.FileSuffix.IsPresent()) { List <string> suffix = column.FileSuffix.SplitComma(); if (suffix.Any()) { allowExt = string.Join(",", suffix.Select(s => "'" + s + "'").ToList()); } } //建立初始化附件控件js函数 script.AppendLine("var initFile" + FormId.Replace('-', '_') + tempFid + "=function(){"); script.AppendLine("$(\"###formid##" + tempFid + "-FILE\").fileinput({"); script.AppendLine("language: language,"); script.AppendLine($"uploadUrl:\"{ _applicationContext.BaseUrl }/Component/UploadFile/{ field.FieldValue }\","); //script.AppendLine("deleteUrl:\"http://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath + "/Api/Core/deletefile\","); if (allowExt.IsPresent()) { script.AppendLine($"allowedFileExtensions : [{ allowExt }],"); } if (column.FileSize > 0) { script.AppendLine($"maxFileSize: {column.FileSize},"); } script.AppendLine("uploadExtraData:{fid:'" + field.FieldValue + "'},"); script.AppendLine("allowedPreviewTypes: ['image', 'text'],"); script.AppendLine($"maxFileCount:{(column.FileCount == 0 ? 1 : column.FileCount)},"); script.AppendLine("showUpload: true,"); //script.AppendLine("showCaption: false,"); //script.AppendLine("overwriteInitial: false,"); script.AppendLine("slugCallback: function(filename) {"); script.AppendLine(" return filename.replace('(', '_').replace(']', '_');"); script.AppendLine("},"); //浏览按钮样式 //script.AppendLine("browseClass: \"btn btn-primary btn-block\","); //浏览按钮图标 script.AppendLine("previewFileIcon: \"<i class='glyphicon glyphicon-king'></i>\"})"); //script.AppendLine(@".on('fileloaded', function(event, file, previewId, index, reader) { // var files =$(this).fileinput('getFileStack'); // $(this).fileinput('uploadSingle',index,files,false);})"); script.AppendLine(@".on('fileuploaded', function (event, data, previewId, index) { if(data.response.success==false){bootbox.alert(data.response.msg);}else{loadFileList('" + FormId + "', '" + column.ColName + "', '" + field.FieldValue.ToString() + "'); } }); "); script.AppendLine("}"); if (_formStatus == FormStatus.Edit) { string bid = field.FieldValue.ToString(); script.AppendLine("loadFileList('" + FormId + "','" + column.ColName + "','" + bid + "');"); } } #endregion #region 图片头像 else if (column.CtrlType == FapColumn.CTRL_TYPE_IMAGE && !field.ReadOnly) { if (field.FieldValue.ToString().IsMissing()) { field.FieldValue = UUIDUtils.Fid; } script.AppendLine("loadImageControl('avatar" + column.ColName + "')"); } #endregion #region 富文本控件 else if (column.CtrlType == FapColumn.CTRL_TYPE_RICHTEXTBOX) { script.AppendLine("var wysiwyg_" + column.ColName + " =$(\"###formid## #" + column.ColName + ".wysiwyg-editor\").ace_wysiwyg({" + @" toolbar: [ 'font', null, 'fontSize', null, 'bold', 'italic', 'strikethrough', 'underline', null, 'insertunorderedlist', 'insertorderedlist', 'outdent', 'indent', null, 'justifyleft', 'justifycenter', 'justifyright', null, 'createLink', 'unlink', null, 'insertImage', null, 'foreColor', null, 'undo', 'redo', null, 'viewSource' ] }).prev().addClass('wysiwyg-style1');" ); //script.AppendLine("$(\"#frm-" + _id + " #" + column.ColName + "\").html('" + StringUtil.TextToHtml(field.FieldValue.ToString()) + "');"); } #endregion #region 数值控件 else if (column.CtrlType == FapColumn.CTRL_TYPE_INT || column.CtrlType == FapColumn.CTRL_TYPE_DOUBLE || column.CtrlType == FapColumn.CTRL_TYPE_MONEY) { if (column.EditAble != 1) { continue; } int min = column.MinValue; int max = column.MaxValue; if (min == 0 && max == 0) { min = int.MinValue; max = int.MaxValue; } string unit = ""; if (column.CtrlType == FapColumn.CTRL_TYPE_MONEY) { unit = " postfix: '¥'"; } string step = "1"; int precision = column.ColPrecision; if (precision > 0) { step = "0." + "1".PadLeft(precision, '0'); } script.AppendLine(" $(\"###formid## input[name='" + column.ColName + "']\").TouchSpin({"); script.AppendLine(@" min: " + min + @", max: " + max + @", step: " + step + @", decimals: " + precision + @", boostat: 5, maxboostedstep: 10, " + unit + @" }); "); } #endregion #region 数值范围 else if (column.CtrlType == FapColumn.CTRL_TYPE_RANGE) { StringBuilder sr = new StringBuilder("["); for (int i = column.MinValue; i <= column.MaxValue; i++) { sr.Append($"{i},"); } string r = sr.ToString().TrimEnd(','); r += "]"; script.AppendLine(@"$('###formid## #" + column.ColName + @"').jRange({ from: " + column.MinValue + @", to: " + column.MaxValue + @", step: 1, scale: " + r + @", format: '%s', width: 680, disable:" + ((column.EditAble == 0 || field.ReadOnly) ? "true," : "false,") + @" theme:'theme-blue', showLabels: true, isRange: true });"); } #endregion #region 籍贯 else if (column.CtrlType == FapColumn.CTRL_TYPE_NATIVE) { //籍贯 script.AppendLine("$(\"###formid## #" + column.ColName + "\").citypicker();"); } #endregion #region 城市 else if (column.CtrlType == FapColumn.CTRL_TYPE_CITY) { //城市 script.AppendLine("$(\"###formid## #" + column.ColName + "\").cityselect();"); } #endregion #region 评星级 else if (column.CtrlType == FapColumn.CTRL_TYPE_STAR) { if (field.FieldValue?.ToString().IsMissing() ?? true) { field.FieldValue = "0"; } //评星级 script.AppendLine("if(!$(\"###formid## #" + column.ColName + "\").prop(\"disabled\")){ $(\"###formid## #rat-" + column.ColName + "\").raty({number: 5,score:" + field.FieldValue + @", cancel: true, 'starType' : 'i', 'click': function(score,evt) {" + "$(\"###formid## #" + column.ColName + "\").val(score);" + @"}, })}else{" + "$(\"###formid## #rat-" + column.ColName + "\").raty({number: 5,score:" + field.FieldValue + @", 'starType' : 'i',readOnly: true })}"); } #endregion #region 多語 else if (column.CtrlType == FapColumn.CTRL_TYPE_TEXT && column.IsMultiLang == 1) { string oriCtrl = column.ColName; string ctrmultiLang = oriCtrl + _multiLangService.CurrentLanguageName; script.AppendLine("$(\"###formid## #" + oriCtrl + "\").on(\"blur\",function(){$(\"###formid## #" + ctrmultiLang + "\").val($(this).val())}).next().on(ace.click_event, function(){"); script.AppendLine(" document.addEventListener(\"mousedown\", onMultiLangPoverMouseDown, false);"); script.AppendLine("var fid=$(this).data(\"fid\");"); script.AppendLine("var X1 = $(\"###formid## #" + oriCtrl + "\").offset().top-55;var Y1 =$(\"###formid## #" + oriCtrl + "\").offset().left;"); script.AppendLine("var bg=$(\"#\"+fid).closest(\".modal-lg\");var top=X1;var left=Y1"); script.AppendLine("if(bg){ var bgo=bg.offset(); top=X1-bgo.top;left=Y1-bgo.left;}"); script.AppendLine("$(\"#\"+fid).css({\"position\": \"fixed\",\"display\":\"inline-grid\",\"top\":top+'px',\"left\":left+'px'});"); script.AppendLine("})"); } #endregion } #region 多语公共js if (formFields.Exists(f => f.CurrentColumn.IsMultiLang == 1)) { //关闭按钮事件 script.AppendLine(" $(\".multilangpopoverclose\").on(ace.click_event, function () { $(this).closest(\".popover\").css(\"display\",\"none\"); });"); script.AppendLine(@"function multiLangPoverClose() {" + @"$('.popovermultilang').css('display','none');" + "document.removeEventListener(\"mousedown\", onMultiLangPoverMouseDown, false);}" + "function onMultiLangPoverMouseDown(event) {" + "if (!(event.target.className.indexOf(\"popovermultilang\")>0 || $(event.target).parents(\".popovermultilang\").length > 0)) {" + "multiLangPoverClose();" + "}}"); } #endregion #region TextArea if (hasTextArea) { script.AppendLine(@"$('textarea.limited').inputlimiter({ remText: '%n 字符剩余...', limitText: '最大字符数 : %n.' });" ); } #endregion #region 表单校验 if (needValidate) { //校验 script.AppendLine("$('###formid##').validate({"); script.AppendLine(" errorElement: 'div',"); script.AppendLine(" errorClass: 'error',"); script.AppendLine(" focusInvalid: false,"); script.AppendLine(" ignore: \"\","); script.AppendLine(" rules: {"); foreach (FapColumn col in _fapColumns) { //非空可见 if ((col.NullAble == 0 && col.ShowAble == 1) || col.RemoteChkURL.IsPresent()) { if (col.CtrlType == FapColumn.CTRL_TYPE_REFERENCE) { script.AppendLine(" " + col.ColName + "MC" + ": {"); } else { script.AppendLine(" " + col.ColName + ": {"); } if (col.NullAble == 0 && col.ShowAble == 1) { script.AppendLine(" required: true,"); } if (col.RemoteChkURL.IsPresent()) { string oriValue = FormData.Get(col.ColName).ToString(); script.AppendLine(" remote: '"+ _applicationContext.BaseUrl + col.RemoteChkURL + "&fid=" + HttpUtility.UrlEncode(FidValue) + "&orivalue=" + HttpUtility.UrlEncode(oriValue) + "&currcol=" + HttpUtility.UrlEncode(col.ColName) + "',"); } script.AppendLine(" },"); } } script.AppendLine(" },"); script.AppendLine(" messages: {"); foreach (FapColumn col in _fapColumns) { //非空可见 if ((col.NullAble == 0 && col.ShowAble == 1) || col.RemoteChkURL.IsPresent()) { if (col.CtrlType == FapColumn.CTRL_TYPE_REFERENCE) { script.AppendLine(" " + col.ColName + "MC" + ": {"); } else { script.AppendLine(" " + col.ColName + ": {"); } if (col.NullAble == 0 && col.ShowAble == 1) { script.AppendLine(" required: \"["+ col.ColComment + "]必须填写!\","); } if (col.RemoteChkURL.IsPresent()) { string msg = col.RemoteChkMsg; if (msg.IsMissing()) { msg = "[" + col.ColComment + "]此项值已经存在,请更换"; } script.AppendLine(" remote: \""+ msg + "\","); } script.AppendLine(" },"); } } script.AppendLine(" },"); //校验容器 script.AppendLine("errorLabelContainer: $(\"###formid## div.error\"),"); script.AppendLine(" highlight: function (e) {"); script.AppendLine(" $(e).closest('.form-group').removeClass('has-info').addClass('has-error');"); script.AppendLine(" },"); script.AppendLine(" success: function (e) {"); script.AppendLine(" $(e).closest('.form-group').removeClass('has-error');//.addClass('has-info');"); script.AppendLine(" $(e).remove();"); script.AppendLine(" },"); script.AppendLine(" errorPlacement: function (error, element) {"); script.AppendLine(" if(element.is('input[type=checkbox]') || element.is('input[type=radio]')) {"); script.AppendLine(" var controls = element.closest('div[class*=\"col-\"]');"); script.AppendLine(" if(controls.find(':checkbox,:radio').length > 1) controls.append(error);"); script.AppendLine(" else error.insertAfter(element.nextAll('.lbl:eq(0)').eq(0));"); script.AppendLine(" }"); //script.AppendLine(" else if(element.is('.select2')) {"); //script.AppendLine(" error.insertAfter(element.siblings('[class*=\"select2-container\"]:eq(0)'));"); //script.AppendLine(" }"); script.AppendLine(" else if(element.is('.chosen-select')) {"); script.AppendLine(" error.insertAfter(element.siblings('[class*=\"chosen-container\"]:eq(0)'));"); script.AppendLine(" }"); script.AppendLine(" else error.insertAfter(element.parent());"); script.AppendLine(" },"); script.AppendLine(" submitHandler: function (form) {"); script.AppendLine(" },"); script.AppendLine(" invalidHandler: function (form) {"); script.AppendLine(" }"); script.AppendLine(" });"); } #endregion #region 表单联动脚本 DynamicParameters pm = new DynamicParameters(); pm.Add("TableName", _fapTable.TableName); var formInjections = _dbContext.QueryWhere <FapFormInjection>("TableName=@TableName and IsEnabled=1", pm); if (formInjections != null && formInjections.Any()) { foreach (var inject in formInjections) { var changCol = _fapColumns.FirstOrDefault(f => f.ColName == inject.ChangeColumn); //可见可编辑 if (changCol != null && changCol.EditAble == 1 && changCol.ShowAble == 1) { string ctrlName = changCol.ColName; if (changCol.CtrlType == FapColumn.CTRL_TYPE_REFERENCE) { ctrlName = changCol.ColName + "MC"; } script.AppendLine("$('#" + ctrlName + "').change(function(){"); string jsonData = "{'Fid':'" + inject.Fid + "','" + changCol.ColName + "':$('#" + changCol.ColName + "').val()"; if (inject.ParamColumns.IsPresent()) { var paramCols = inject.ParamColumns.SplitComma(); foreach (var pc in paramCols) { jsonData += ",'" + pc + "':$('#" + pc + "').val()"; } } jsonData += "}"; script.AppendLine("$.post(basePath+'/Api/Core/frminjection'," + jsonData + ",function(result){"); script.AppendLine("$.each(result,function(name,value) {"); script.AppendLine("$('#'+name).val(value)"); script.AppendLine("});"); script.AppendLine("});"); script.AppendLine("})"); } } } #endregion #region 注入script脚本 //元数据表注入 if (_fapTable.ScriptInjection.IsPresent()) { script.AppendLine(_fapTable.ScriptInjection); } //js文件注入 string jsfilePath = Path.Combine(new string[] { Directory.GetCurrentDirectory(), "wwwroot", "Scripts", "FapFormPlugin", $"frm.plugin.{_fapTable.TableName}.js" }); if (File.Exists(jsfilePath)) { script.AppendLine(File.ReadAllText(jsfilePath, Encoding.UTF8)); } #endregion script.AppendLine(" });"); return(script.ToString()); }
public List <MenuItem> BuildMenus() { string ceoModuleUid = "f4ce11e59cad54031d2f"; //经理自主模块Fid string mgrModuleUid = "23b611e6b65e40b5abc8"; List <MenuItem> menus = new List <MenuItem>(); List <FapMenu> threeLevel = new List <FapMenu>(); List <FapModule> modules = new List <FapModule>(); bool isDeptManager = _rbacService.IsDeptManager(); bool isCEO = _rbacService.IsCEO(); //获取权限菜单 IEnumerable <FapRoleMenu> roleMenuUids = _rbacService.GetRoleMenuList(_applicationContext.CurrentRoleUid); if (roleMenuUids.Any()) { List <FapMenu> roleMenus = new List <FapMenu>(); foreach (var rm in roleMenuUids) { FapMenu fm; if (_platformDomain.MenuSet.TryGetValue(rm.MenuUid, out fm)) { //经理自助菜单权限 只有部门经理或者负责人具有 if (!isDeptManager && fm.ModuleUid == mgrModuleUid) { continue; } if (!isCEO && fm.ModuleUid == ceoModuleUid) { continue; } if (fm.MenuCode.Length > 5) { //如果没有二级菜单授权,这里要加上。 string parentCode = fm.MenuCode.Substring(0, 5); if (!roleMenus.Exists(m => m.MenuCode == parentCode)) { var pmenu = _platformDomain.MenuSet.FirstOrDefault <FapMenu>(m => m.MenuCode == parentCode); if (pmenu != null) { roleMenus.Add(pmenu); } } } if (!roleMenus.Contains(fm)) { roleMenus.Add(fm); } } } var roleMenusOrder = roleMenus.OrderBy(m => m.MenuOrder); foreach (var fm in roleMenusOrder) { //仅仅处理二级菜单 if (fm.MenuUrl.IsMissing()) { continue; } if (fm.ActiveFlag == 0) { continue; } if (fm.MenuCode.Length > 5) { threeLevel.Add(fm); continue; } string menuText = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Menu, fm.Fid); MenuItem fmm = new MenuItem { Text = menuText, Value = fm.MenuCode, NavigateUrl = fm.MenuUrl, ToolTip = fm.BadgePlusClass }; FapModule fmd; //是模块的时候 if (_platformDomain.ModuleSet.TryGetValue(fm.ModuleUid, out fmd)) { MenuItem mmd = null; menuText = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Module, fmd.Fid); if (!modules.Contains(fmd)) { modules.Add(fmd); mmd = new MenuItem { Text = menuText, NavigateUrl = "", Value = fmd.ModuleCode, ImageUrl = fmd.Icon, Target = fmd.ModuleOrder.ToString() }; mmd.ChildItems.Add(fmm); menus.Add(mmd); } else { mmd = menus.Find(m => m.Text == menuText); mmd.ChildItems.Add(fmm); } } } } //管理员账号 增加系统管理菜单 if (_applicationContext.UserName == FapPlatformConstants.Administrator) { //检查系统菜单,如果有就移除 var sysModule = _platformDomain.ModuleSet.FirstOrDefault(m => m.ModuleCode == "099"); if (sysModule != null) { var sysMenu = menus.Find(m => m.Value == sysModule.ModuleCode); if (sysMenu != null) { menus.Remove(sysMenu); modules.Remove(sysModule); } } //重新增加系统菜单 IEnumerator <FapMenu> ms = _platformDomain.MenuSet.Where(m => m.MenuCode.StartsWith("099", System.StringComparison.OrdinalIgnoreCase)).OrderBy(m => m.MenuOrder).GetEnumerator(); while (ms.MoveNext()) { FapMenu fm = ms.Current; if (fm.ActiveFlag == 0) { continue; } //仅仅处理二级菜单 if (fm.MenuUrl.IsMissing()) { continue; } if (fm.MenuCode.Length > 5) { threeLevel.Add(fm); continue; } string mx = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Menu, fm.Fid); //菜单 MenuItem fmm = new MenuItem { Text = mx, NavigateUrl = fm.MenuUrl, Value = fm.MenuCode, ToolTip = fm.BadgePlusClass }; FapModule fmd; if (_platformDomain.ModuleSet.TryGetValue(fm.ModuleUid, out fmd)) { mx = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Module, fmd.Fid); if (!modules.Contains(fmd)) { modules.Add(fmd); //模块 MenuItem mmd = new MenuItem { Text = mx, NavigateUrl = "", ImageUrl = fmd.Icon, Value = fmd.ModuleCode, Target = fmd.ModuleOrder.ToString() }; mmd.ChildItems.Add(fmm); menus.Add(mmd); } else { menus.Find(m => m.Text == mx).ChildItems.Add(fmm); } } } } //处理三级菜单 if (threeLevel.Any()) { var threeMenus = threeLevel.OrderBy(m => m.MenuOrder); foreach (var menu in threeMenus) { //找到所在的模块 var module = menus.Find(m => menu.MenuCode.StartsWith(m.Value, System.StringComparison.OrdinalIgnoreCase)); if (module != null && module.ChildItems != null && module.ChildItems.Count > 0) { foreach (MenuItem item in module.ChildItems) { if (menu.MenuCode.StartsWith(item.Value, System.StringComparison.OrdinalIgnoreCase) && item.Value.Length == 5) { string mx = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Menu, menu.Fid); MenuItem fmm = new MenuItem { Text = mx, Value = menu.MenuCode, NavigateUrl = menu.MenuUrl, ToolTip = menu.BadgePlusClass }; item.ChildItems.Add(fmm); break; } } } } } return(menus); }
/// <summary> /// 生成控件,切记获取值得控件要有 class='form-control' /// </summary> /// <returns></returns> public string BuilderForm(string frmid, int _colCount, bool isColspan, FormStatus formStatus = FormStatus.Add) { string lableName = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.FapColumn, $"{_fapColumn.TableName}_{_fapColumn.ColName}"); string ctrlName = _fapColumn.ColName; //是否可编辑 string editAble = string.Empty; if (_fapColumn.EditAble == 0 || ReadOnly) { editAble = "disabled='disabled'"; } StringBuilder sbFormGroup = new StringBuilder(); string labelCol = " col-sm-2 col-xs-12"; if (formStatus == FormStatus.View) { labelCol = " col-sm-2 col-xs-2"; } string ctrlOneCol = " col-xs-12 col-sm-10"; string ctrlTwoCol = " col-xs-12 col-sm-4 "; if (formStatus == FormStatus.View) { ctrlOneCol = " col-xs-10 col-sm-10"; ctrlTwoCol = " col-xs-4 col-sm-4 "; } if (_colCount == 1) { labelCol = " col-sm-3 col-xs-12"; ctrlTwoCol = ctrlOneCol = " col-xs-12 col-sm-9"; if (formStatus == FormStatus.View) { labelCol = " col-sm-3 col-xs-3"; ctrlTwoCol = ctrlOneCol = " col-xs-9 col-sm-9"; } } //一个控件占一行textarea,richtextbox if (isColspan) { //sbFormGroup.AppendLine("<div class=\"form-group col-xs-12 col-sm-12\">"); sbFormGroup.AppendFormat("<label class=\"" + labelCol + " control-label no-padding-right\" for=\"{0}\">{1}", ctrlName, lableName); if (_fapColumn.NullAble == 0 && formStatus != FormStatus.View) { sbFormGroup.Append("<i class='red'>*</i>"); } if (formStatus == FormStatus.View) { sbFormGroup.Append(":"); } sbFormGroup.Append("</label>"); sbFormGroup.AppendLine("<div class=\"ctrlcontainer " + ctrlOneCol + "\">"); } else { //sbFormGroup.AppendLine(" <div class=\"form-group col-xs-12 col-sm-6\">"); sbFormGroup.AppendFormat("<label class=\"" + labelCol + " control-label no-padding-right\" for=\"{0}\">{1}", ctrlName, lableName); if (_fapColumn.NullAble == 0 && formStatus != FormStatus.View) { sbFormGroup.Append("<i class='red'>*</i>"); } if (formStatus == FormStatus.View) { sbFormGroup.Append(":"); } sbFormGroup.Append("</label>"); sbFormGroup.AppendLine("<div class=\"ctrlcontainer " + ctrlTwoCol + "\">"); } if (formStatus == FormStatus.View) { sbFormGroup.AppendLine("<div class=\"text-info control-label align-left\">" + $"<label id=\"{ctrlName}\" >{BuilderFormFieldText()} </label>" + "</div>"); } else { sbFormGroup.AppendLine("<div class='clearfix'>"); BuilderDataFormField(frmid, lableName, editAble, sbFormGroup); sbFormGroup.AppendLine("</div>"); } sbFormGroup.AppendLine("</div>"); //sbFormGroup.AppendLine("</div>"); return(sbFormGroup.ToString()); }
private string RenderJavascript() { var script = new StringBuilder(); script.AppendLine("var formdata={};"); script.AppendLine("formdata.Fid='" + _pkValue + "';"); script.AppendLine("$(function(){"); if (_formModel == XEditableFormModel.Inline) { script.AppendLine(@"$.fn.editable.defaults.mode = 'inline';"); } else { script.AppendLine(@"$.fn.editable.defaults.mode = 'popup';"); } script.AppendLine("$.fn.editableform.loading = \"<div class='editableform-loading'><i class='ace-icon fa fa-spinner fa-spin fa-2x light-blue'></i></div>\";"); script.AppendLine("$.fn.editableform.buttons = '<button type=\"submit\" class=\"btn btn-info editable-submit\"><i class=\"ace-icon fa fa-check\"></i></button>'+"); script.AppendLine(" '<button type=\"button\" class=\"btn editable-cancel\"><i class=\"ace-icon fa fa-times\"></i></button>'; "); foreach (var xfield in _xEditableFields) { var column = xfield.CurrFapColumn; //script.AppendLine(SetFormDataJson(column, xfield.FieldValue)); if (column.EditAble == 1) { script.AppendLine("$('#" + column.ColName + "').editable({"); script.AppendLine(" name:'" + column.ColName + "',"); script.AppendLine(GetOption(column, xfield.FieldValue)); if (column.NullAble == 0) { script.AppendLine(" validate: function(value) { if($.trim(value) == '') return '此项是必须的!'; },"); } if (_saveModel == XEditableSaveModel.Single) { script.AppendLine(" url: basePath+'" + _editUrl + "', "); script.AppendLine("pk: '" + _pkValue + "', "); string strPv = "params.value=params.value"; //参照返回的是一个对象 if (column.CtrlType == FapColumn.CTRL_TYPE_REFERENCE) { strPv = "params.value=params.value.code"; } script.AppendLine(@"params: function(params) { //originally params contain pk, name and value params.tablename = '" + TableName + @"';" + strPv + @" return params;},"); //title始终放最后 script.AppendLine("title: '" + _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.FapColumn, $"{column.TableName}_{column.ColName}") + "',"); } //成功返回 //script.AppendLine("success: function(response, newValue) {formdata."+column.ColName+"= }"); script.AppendLine("});"); } } //销毁 script.AppendLine(@"$(document).one('ajaxloadstart.page', function(e) { //in ajax mode, remove remaining elements before leaving page try { $('.editable').editable('destroy'); } catch(e) {} $('[class*=select2]').remove(); });" ); if (!_enabled) { script.AppendLine(" $('.profile-user-info.profile-user-info-striped .editable').editable('disable');"); } script.AppendLine("})"); if (_saveModel == XEditableSaveModel.All) { script.AppendLine("var saveXEditFormData=function(){"); script.AppendLine(@" var i = 0; for(f in formdata) { if(f=='Fid') { continue; } i++; } if(i==0) { bootbox.alert('没检测到你数据的改变,不需要保存'); return; } "); script.AppendLine("formdata.TableName='" + TableName + "';formdata.oper='edit'"); script.AppendLine("$.post(basePath+'" + _editUrl + "',formdata,function(result){if(result==true){bootbox.alert('更新成功')}else{bootbox.alert('更新失败')}});"); script.AppendLine("};"); } return(script.ToString()); }
/// <summary> /// /// </summary> /// <param name="fapColumn"></param> /// <param name="disCols">手动设置可见的字段,默认可能为不可见</param> /// <param name="hideCols">要隐藏的字段</param> /// <returns></returns> public static Column ToColumn(this FapColumn fapColumn, IMultiLangService multiLang, IDbContext dbContext) { //判断是否为隐藏。当disCols不包含且 ShowAble==0 bool hideAble = fapColumn.ShowAble == 0; string colName = fapColumn.ColName; //if (colName.EndsWith("MC") && fapColumn.CtrlType == FapColumn.CTRL_TYPE_REFERENCE) //{ // colName = colName.Substring(0, colName.Length - 2); //} //如果是参照字段,隐藏之,显示MC字段 //if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_REFERENCE && !hideAble && fapColumn.IsCustomColumn == 0) //{ // hideAble = true; //} string columnName = fapColumn.ColName; if (fapColumn.IsMultiLang == 1) { string langName = multiLang.CurrentLanguageName; if (langName != MultiLanguageEnum.ZhCn.ToString()) { columnName += langName; } } //fapColumn.CtrlType Column col = new Column(fapColumn); string label = multiLang.GetMultiLangValue(MultiLanguageOriginEnum.FapColumn, $"{fapColumn.TableName}_{fapColumn.ColName}"); col.SetLabel(label); col.SetKey(fapColumn.ColType == FapColumn.COL_TYPE_PK); col.SetWidth(fapColumn.DisplayWidth); col.SetHidden(hideAble).SetHidelg(hideAble).SetColmenu(true); col.SetEditable(fapColumn.EditAble == 1); //编辑规则 EditRules editRules = new EditRules(); col.SetEditRules(editRules); if (fapColumn.NullAble == 0) { editRules.Required = true; } if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_CHECKBOX) { col.SetFormatter(Enums.Formatters.Checkbox); //编辑设置 col.SetEditType(Enums.EditType.Checkbox); EditOptions eo = new EditOptions() { Value = "1:0" }; col.SetEditOptions(eo); //查询设置 col.SetSearchType(Enums.Searchtype.Select); col.SetSearchOption(Enums.SearchOptions.Equal); col.SetSearchOption(Enums.SearchOptions.NotEqual); IDictionary <string, string> searchTerms = new Dictionary <string, string>(); searchTerms.Add("1", "是"); searchTerms.Add("0", "否"); col.SetSearchTerms(searchTerms); //默认ACE样式函数 //col.SetUnFormat("aceSwitch"); } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_COMBOBOX) { if (fapColumn.MultiAble == 1) { col.SetCustomFormatter("formatCheckboxList"); col.SetUnFormat("unformatCheckboxList"); } else { col.SetFormatter(Enums.Formatters.Select); //编辑设置 col.SetEditType(Enums.EditType.Select); IEnumerable <FapDict> list = dbContext.Dictionarys(fapColumn.ComboxSource); if (list != null && list.Any()) { string codeValues = string.Join(";", list.Select(c => c.Code + ":" + c.Name).ToList()); EditOptions eo = new EditOptions() { Value = codeValues }; //" getCodeData('" + fapColumn.RefTable + "')"}; col.SetEditOptions(eo); //查询设置 col.SetSearchType(Enums.Searchtype.Select); col.SetSearchOption(Enums.SearchOptions.Equal); col.SetSearchOption(Enums.SearchOptions.NotEqual); IDictionary <string, string> searchTerms = new Dictionary <string, string>(); foreach (var item in list) { searchTerms.Add(item.Code, item.Name); } col.SetSearchTerms(searchTerms); } } } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_CHECKBOXLIST) { col.SetCustomFormatter("formatCheckboxList"); col.SetUnFormat("unformatCheckboxList"); } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_DATE || fapColumn.CtrlType == FapColumn.CTRL_TYPE_DATETIME) { string fmt = fapColumn.DisplayFormat; col.SetEditType(Enums.EditType.Text); EditOptions editoptions = new EditOptions(); col.SetEditOptions(editoptions); if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_DATE) { if (fmt.EqualsWithIgnoreCase("yyyy")) { fmt = "Y"; } else if (fmt.EqualsWithIgnoreCase("yyyy-mm")) { fmt = "Y-m"; } else { fmt = "Y-m-d"; } col.SetFormatter(Enums.Formatters.Date, "srcformat:\"" + fmt + "\",newformat:\"" + fmt + "\""); //查询设置 col.SetSearchType(Enums.Searchtype.Datepicker); } else { if (fmt.IsPresent() && fmt.EqualsWithIgnoreCase("HH:mm")) { fmt = "H:i"; } else { fmt = "Y-m-d H:i:s"; } col.SetFormatter(Enums.Formatters.Date, "srcformat:\"" + fmt + "\",newformat:\"" + fmt + "\""); //查询设置 col.SetSearchType(Enums.Searchtype.Datetimepicker); } //编辑设置 editoptions.DataInit = @"function (element) { $(element).datepicker({ id: '" + fapColumn.ColName + @"_datePicker', dateFormat: '" + fmt + @"', //minDate: new Date(2010, 0, 1), maxDate: new Date(2030, 0, 1), showOn: 'focus' }); }"; //默认ACE样式函数 //col.SetUnFormat("pickDate"); //col.SetDataInit("initDateSearch"); col.SetSearchDateFormat(fapColumn.DisplayFormat); col.SetSearchOption(Enums.SearchOptions.Equal); col.SetSearchOption(Enums.SearchOptions.NotEqual); col.SetSearchOption(Enums.SearchOptions.Greater); col.SetSearchOption(Enums.SearchOptions.GreaterOrEqual); col.SetSearchOption(Enums.SearchOptions.Less); col.SetSearchOption(Enums.SearchOptions.LessOrEqual); } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_DOUBLE || fapColumn.CtrlType == FapColumn.CTRL_TYPE_MONEY) { SetEditRulesNumber(fapColumn, editRules); //inline 编辑设置 col.SetEditType(Enums.EditType.Text); EditOptions editopt = new EditOptions(); editopt.DataInit = @"function (element) { $(element).TouchSpin({ step: 1, decimals: 2, boostat: 5, maxboostedstep: 10 }); }"; //col.SetFormatter(Enums.Formatters.Currency); if (fapColumn.DisplayFormat == "%") { col.SetFormatter(Enums.Formatters.Percent); } //col.SetFormatter(Enums.Formatters.Number, "thousandsSeparator: ','"); col.SetSearchOption(Enums.SearchOptions.Equal); col.SetSearchOption(Enums.SearchOptions.NotEqual); col.SetSearchOption(Enums.SearchOptions.Greater); col.SetSearchOption(Enums.SearchOptions.GreaterOrEqual); col.SetSearchOption(Enums.SearchOptions.Less); col.SetSearchOption(Enums.SearchOptions.LessOrEqual); } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_INT) { SetEditRulesNumber(fapColumn, editRules); //inline 编辑设置 col.SetEditType(Enums.EditType.Text); EditOptions editopt = new EditOptions(); editopt.DataInit = @"function (element) { $(element).TouchSpin({ step: 1, boostat: 5, maxboostedstep: 10 }); }"; col.SetFormatter(Enums.Formatters.Integer); col.SetSearchOption(Enums.SearchOptions.Equal); col.SetSearchOption(Enums.SearchOptions.NotEqual); col.SetSearchOption(Enums.SearchOptions.Greater); col.SetSearchOption(Enums.SearchOptions.GreaterOrEqual); col.SetSearchOption(Enums.SearchOptions.Less); col.SetSearchOption(Enums.SearchOptions.LessOrEqual); } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_CITY) { //城市 col.SetEditType(Enums.EditType.Text); EditOptions editoptions = new EditOptions(); editoptions.DataInit = @"function (element) { $(element).cityselect(); }"; col.SetEditOptions(editoptions); } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_NATIVE) { //籍贯 col.SetEditType(Enums.EditType.Text); EditOptions editoptions = new EditOptions(); editoptions.DataInit = @"function (element) { $(element).citypicker(); }"; col.SetEditOptions(editoptions); } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_REFERENCE) { col.SetSearchType(Enums.Searchtype.Reference); col.SetSearchOption(Enums.SearchOptions.IsIn); col.SetSearchOption(Enums.SearchOptions.IsNotIn); col.SetCustomFormatter("formatReference"); col.SetUnFormat("unformatReference"); col.SetEditType(Enums.EditType.Custom); EditOptions editoptions = new EditOptions(); editoptions.DataInit = @"function (element) { $(element).find('input:text').on(ace.click_event,function(e){$(this).next().trigger(ace.click_event);e.preventDefault();}); $(element).find('input:text').next().on(ace.click_event, function(){ var $this=$(this).prev(); openRefrenceWindow('" + fapColumn.ColComment + "选择','" + fapColumn.Fid + @"','" + fapColumn.RefType + @"',function(code,name){ $this.val(name).data('value',code); $this.closest('td').next().find('input:text').val(name); },function(){ $this.val('').data('value',''); }) }); }"; editoptions.Custom_element = "createReferenceEditElement"; //创建元素 editoptions.Custom_value = "getReferenceElementValue"; //获取值 col.SetEditOptions(editoptions); } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_FILE) { //附件 col.SetCustomFormatter("attachmentInfo"); col.SetUnFormat("unattachmentInfo"); } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_IMAGE) { col.SetCustomFormatter("formatImage"); col.SetUnFormat("unformatImage"); } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_TEXT) { SetTextSearchOption(col); } else if (fapColumn.CtrlType == FapColumn.CTRL_TYPE_EMAIL) { SetTextSearchOption(col); editRules.Email = true; } else { SetTextSearchOption(col); } return(col); }