init commit
This commit is contained in:
757
20220330_Vote/Ewide.RoadFlow/Data/Program/Program.cs
Normal file
757
20220330_Vote/Ewide.RoadFlow/Data/Program/Program.cs
Normal file
@@ -0,0 +1,757 @@
|
||||
using Ewide.Core;
|
||||
using Furion.DependencyInjection;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Microsoft.Extensions.Localization;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using RoadFlow.Utility;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RoadFlow.Data
|
||||
{
|
||||
public class Program: RoadFlowRepository<RoadFlow.Model.rf_program>,IProgram, ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 得到运行时实体
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="localizer">语言包</param>
|
||||
/// <returns></returns>
|
||||
public Model.ProgramRun GetRunModel(string id, IStringLocalizer localizer = null)
|
||||
{
|
||||
string key = "ProgramRun_" + id;
|
||||
var obj = _memoryCache.Get(key);
|
||||
if (obj != null)
|
||||
{
|
||||
return (Model.ProgramRun)obj;
|
||||
}
|
||||
else
|
||||
{
|
||||
var programModel = GetOneById(id);
|
||||
if (null == programModel)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
Model.ProgramRun programRunModel = new Model.ProgramRun
|
||||
{
|
||||
ButtonLocation = programModel.ButtonLocation,
|
||||
ClientScript = programModel.ClientScript,
|
||||
ConnId = programModel.ConnId.ToGuid(),
|
||||
CreateTime = programModel.CreateTime,
|
||||
CreateUserId = programModel.CreateUserId.ToGuid(),
|
||||
EditModel = programModel.EditModel,
|
||||
ExportFileName = programModel.ExportFileName,
|
||||
ExportHeaderText = programModel.ExportHeaderText,
|
||||
ExportTemplate = programModel.ExportTemplate,
|
||||
FormId = programModel.FormId,
|
||||
Height = programModel.Height,
|
||||
Id = programModel.Id.ToGuid(),
|
||||
InDataNumberFiledName = programModel.InDataNumberFiledName,
|
||||
IsAdd = programModel.IsAdd,
|
||||
IsPager = programModel.IsPager,
|
||||
RowNumber = programModel.RowNumber,
|
||||
Name = programModel.Name,
|
||||
ProgramButtons = new ProgramButton().GetAllByProgramId(programModel.Id),
|
||||
ProgramExports = new ProgramExport().GetAllByProgramId(programModel.Id),
|
||||
ProgramFields = new ProgramField().GetAllByProgramId(programModel.Id),
|
||||
ProgramQueries = new ProgramQuery().GetAllByProgramId(programModel.Id),
|
||||
ProgramValidates = new ProgramValidate().GetAllByProgramId(programModel.Id),
|
||||
PublishTime = programModel.PublishTime,
|
||||
SelectColumn = programModel.SelectColumn,
|
||||
SqlString = programModel.SqlString,
|
||||
Status = programModel.Status,
|
||||
TableHead = programModel.TableHead,
|
||||
TableStyle = programModel.TableStyle,
|
||||
Type = programModel.Type.ToGuid(),
|
||||
Width = programModel.Width,
|
||||
GroupHeaders = programModel.GroupHeaders,
|
||||
DefaultSort = programModel.DefaultSort,
|
||||
EditEvents = programModel.EditEvents
|
||||
};
|
||||
programRunModel.QueryHtml = GetQueryHtml(programRunModel.ProgramQueries, localizer);
|
||||
programRunModel.QueryData = GetQueryData(programRunModel.ProgramQueries);
|
||||
programRunModel.GridColNames = GetColNames(programRunModel.ProgramFields);
|
||||
programRunModel.GridColModels = GetColModels(programRunModel.ProgramFields);
|
||||
programRunModel.DefaultSort =
|
||||
programModel.DefaultSort.IsNullOrWhiteSpace() ? GetDefaultSort(programRunModel.ProgramFields) : programModel.DefaultSort;
|
||||
|
||||
_memoryCache.Set(key, programRunModel);
|
||||
return programRunModel;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 得到查询HTML
|
||||
/// </summary>
|
||||
/// <param name="programQueries"></param>
|
||||
/// <param name="localizer">语言包</param>
|
||||
/// <returns></returns>
|
||||
private string GetQueryHtml(List<Model.rf_programquery> programQueries, IStringLocalizer localizer = null)
|
||||
{
|
||||
StringBuilder query_controls = new StringBuilder();
|
||||
if (null == programQueries)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
foreach (var query in programQueries)
|
||||
{
|
||||
string title = query.ShowTitle.IsNullOrWhiteSpace() ? query.Field : query.ShowTitle;
|
||||
string controlName = query.ControlName.IsNullOrWhiteSpace() ? "ctl_" + query.Id : query.ControlName;
|
||||
query_controls.Append("<span style=\"margin-right:8px;display:inline-block;word-wrap:break-word;white-space:normal;\">");
|
||||
query_controls.Append("<label>" + title + ":</label>");
|
||||
switch (query.InputType)
|
||||
{
|
||||
case 0: //文本框
|
||||
query_controls.Append("<input type='text' class='mytext'");
|
||||
query_controls.Append(" id='" + controlName + "'");
|
||||
query_controls.Append(" name='" + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("/>");
|
||||
break;
|
||||
case 1://日期
|
||||
query_controls.Append("<input type='text' class='mycalendar'");
|
||||
query_controls.Append(" id='" + controlName + "'");
|
||||
query_controls.Append(" name='" + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("/>");
|
||||
break;
|
||||
case 2://日期范围
|
||||
query_controls.Append("<input type='text' class='mycalendar'");
|
||||
query_controls.Append(" id='" + controlName + "'");
|
||||
query_controls.Append(" name='" + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("/>");
|
||||
query_controls.Append(localizer == null ? (localizer == null ? " 至 " : localizer["To"]) : localizer["To"]);
|
||||
query_controls.Append("<input type='text' class='mycalendar'");
|
||||
query_controls.Append(" id='" + controlName + "1'");
|
||||
query_controls.Append(" name='" + controlName + "1'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("/>");
|
||||
break;
|
||||
case 3://日期时间
|
||||
query_controls.Append("<input type='text' class='mycalendar' istime='1'");
|
||||
query_controls.Append(" id='" + controlName + "'");
|
||||
query_controls.Append(" name='" + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("/>");
|
||||
break;
|
||||
case 4://日期时间范围
|
||||
query_controls.Append("<input type='text' class='mycalendar' istime='1'");
|
||||
query_controls.Append(" id='" + controlName + "'");
|
||||
query_controls.Append(" name='" + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("/>");
|
||||
query_controls.Append(localizer == null ? (localizer == null ? " 至 " : localizer["To"]) : localizer["To"]);
|
||||
query_controls.Append("<input type='text' class='mycalendar' istime='1'");
|
||||
query_controls.Append(" id='" + controlName + "1'");
|
||||
query_controls.Append(" name='" + controlName + "1'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("/>");
|
||||
break;
|
||||
case 5://下拉选项
|
||||
query_controls.Append("<select class='myselect'");
|
||||
query_controls.Append(" id='" + controlName + "'");
|
||||
query_controls.Append(" name='" + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append(">");
|
||||
query_controls.Append("<option value=\"\"></option>");
|
||||
switch (query.DataSource.Value)
|
||||
{
|
||||
case 0://字符串表达式
|
||||
query_controls.Append(new Form().GetOptionsByStringExpression(query.DataSourceString, ""));
|
||||
break;
|
||||
case 1://数据字典
|
||||
Dictionary.ValueField valueField = Dictionary.ValueField.Id;
|
||||
switch (query.OrgAttribute.ToInt(0))
|
||||
{
|
||||
case 1:
|
||||
valueField = Dictionary.ValueField.Title;
|
||||
break;
|
||||
case 2:
|
||||
valueField = Dictionary.ValueField.Code;
|
||||
break;
|
||||
case 3:
|
||||
valueField = Dictionary.ValueField.Value;
|
||||
break;
|
||||
case 4:
|
||||
valueField = Dictionary.ValueField.Note;
|
||||
break;
|
||||
case 5:
|
||||
valueField = Dictionary.ValueField.Other;
|
||||
break;
|
||||
default:
|
||||
valueField = Dictionary.ValueField.Id;
|
||||
break;
|
||||
}
|
||||
query_controls.Append(new Dictionary().GetOptionsByID(query.DictValue, valueField));
|
||||
break;
|
||||
case 2://SQL
|
||||
query_controls.Append(new Form().GetOptionsBySQL(query.ConnId, query.DataSourceString, ""));
|
||||
break;
|
||||
}
|
||||
query_controls.Append("</select>");
|
||||
break;
|
||||
case 6://组织机构选择
|
||||
query_controls.Append("<input type='text' class='mymember'");
|
||||
query_controls.Append(" id='" + controlName + "'");
|
||||
query_controls.Append(" name='" + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
string orgOptions = new Organize().GetOrganizeAttrString(query.OrgAttribute);
|
||||
query_controls.Append(orgOptions);
|
||||
query_controls.Append("/>");
|
||||
break;
|
||||
case 7://数据字典选择
|
||||
query_controls.Append("<input type='text' class='mydict'");
|
||||
query_controls.Append(" id='" + controlName + "'");
|
||||
query_controls.Append(" name='" + controlName + "'");
|
||||
query_controls.Append(" rootid='" + query.DictValue + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("/>");
|
||||
break;
|
||||
}
|
||||
query_controls.Append("</span>");
|
||||
}
|
||||
return query_controls.ToString();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 得到查询的JSON data
|
||||
/// </summary>
|
||||
/// <param name="programQueries"></param>
|
||||
/// <returns></returns>
|
||||
private string GetQueryData(List<Model.rf_programquery> programQueries)
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.Append("\"pagesize\": size || curPageSize, \"pagenumber\": number || curPageNumber,");
|
||||
foreach (var query in programQueries)
|
||||
{
|
||||
string controlName = query.ControlName.IsNullOrWhiteSpace() ? "ctl_" + query.Id : query.ControlName;
|
||||
stringBuilder.Append("\"" + controlName + "\":$(\"#" + controlName + "\").val(),");
|
||||
if (query.InputType.In(2, 4))//如果是日期时间范围要加上截止时间
|
||||
{
|
||||
stringBuilder.Append("\"" + controlName + "1\":$(\"#" + controlName + "1\").val(),");
|
||||
}
|
||||
}
|
||||
return "{" + stringBuilder.ToString().TrimEnd(',') + "}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 得到Grid列头
|
||||
/// </summary>
|
||||
/// <param name="programFields"></param>
|
||||
/// <returns></returns>
|
||||
private string GetColNames(List<Model.rf_programfield> programFields)
|
||||
{
|
||||
if (null == programFields)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.Append("[");
|
||||
foreach (var field in programFields)
|
||||
{
|
||||
stringBuilder.Append("\"" + (field.ShowTitle.IsNullOrWhiteSpace() ? field.Field : field.ShowTitle) + "\",");
|
||||
}
|
||||
return stringBuilder.ToString().TrimEnd(',') + "]";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 得到GRID列JSON
|
||||
/// </summary>
|
||||
/// <param name="programFields"></param>
|
||||
/// <returns></returns>
|
||||
private string GetColModels(List<Model.rf_programfield> programFields)
|
||||
{
|
||||
if (null == programFields)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
Newtonsoft.Json.Linq.JArray jArray = new Newtonsoft.Json.Linq.JArray();
|
||||
foreach (var field in programFields)
|
||||
{
|
||||
Newtonsoft.Json.Linq.JObject jObject = new Newtonsoft.Json.Linq.JObject();
|
||||
string name = field.Field;
|
||||
if (name.IsNullOrWhiteSpace())
|
||||
{
|
||||
if (100 == field.ShowType)
|
||||
{
|
||||
name = "opation";
|
||||
}
|
||||
else if (1 == field.ShowType)
|
||||
{
|
||||
name = "rowserialnumber";
|
||||
}
|
||||
}
|
||||
jObject.Add("name", name);
|
||||
if (!field.IsSort.IsNullOrWhiteSpace())
|
||||
{
|
||||
jObject.Add("index", field.IsSort.Trim());
|
||||
}
|
||||
else
|
||||
{
|
||||
jObject.Add("sortable", false);
|
||||
}
|
||||
if (field.ShowType == 100)
|
||||
{
|
||||
jObject.Add("title", false);
|
||||
}
|
||||
if (field.IsShow == 0)
|
||||
{
|
||||
jObject.Add("hidedlg", true);
|
||||
jObject.Add("hidden", true);
|
||||
}
|
||||
if (!field.Width.IsNullOrWhiteSpace())
|
||||
{
|
||||
jObject.Add("width", field.Width.GetNumber());
|
||||
}
|
||||
jObject.Add("align", field.Align);
|
||||
|
||||
jArray.Add(jObject);
|
||||
}
|
||||
return jArray.ToString(Newtonsoft.Json.Formatting.None);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 得到默认排序列
|
||||
/// </summary>
|
||||
/// <param name="programFields"></param>
|
||||
/// <returns></returns>
|
||||
private string GetDefaultSort(List<Model.rf_programfield> programFields)
|
||||
{
|
||||
if (null == programFields || programFields.Count == 0)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
var filed = programFields.Find(p => !p.IsSort.IsNullOrWhiteSpace());
|
||||
if (null != filed)
|
||||
{
|
||||
return filed.IsSort;
|
||||
}
|
||||
else
|
||||
{
|
||||
return programFields.First().Field + " ASC";
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 得到运行时实体
|
||||
/// </summary>
|
||||
/// <param name="id">应用程序ID,RF_Program表ID</param>
|
||||
/// <param name="userModel">用户实体,用于判断按钮权限</param>
|
||||
/// <param name="menuId">菜单id</param>
|
||||
/// <param name="localizer">语言包</param>
|
||||
/// <returns></returns>
|
||||
public Model.ProgramRun VueGetRunModel(string id, SysUser userModel, string menuId, IStringLocalizer localizer = null)
|
||||
{
|
||||
string key = "ProgramRun_VUE_" + id;
|
||||
var obj = _memoryCache.Get(key);
|
||||
Model.ProgramRun programRunModel;
|
||||
if (obj != null)
|
||||
{
|
||||
programRunModel = (Model.ProgramRun)obj;
|
||||
}
|
||||
else
|
||||
{
|
||||
var programModel = GetOneById(id);
|
||||
if (null == programModel)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
programRunModel = new Model.ProgramRun
|
||||
{
|
||||
ButtonLocation = programModel.ButtonLocation,
|
||||
ClientScript = programModel.ClientScript,
|
||||
ConnId = programModel.ConnId.ToGuid(),
|
||||
CreateTime = programModel.CreateTime,
|
||||
CreateUserId = programModel.CreateUserId.ToGuid(),
|
||||
EditModel = programModel.EditModel,
|
||||
ExportFileName = programModel.ExportFileName,
|
||||
ExportHeaderText = programModel.ExportHeaderText,
|
||||
ExportTemplate = programModel.ExportTemplate,
|
||||
FormId = programModel.FormId,
|
||||
Height = programModel.Height,
|
||||
Id = programModel.Id.ToGuid(),
|
||||
InDataNumberFiledName = programModel.InDataNumberFiledName,
|
||||
IsAdd = programModel.IsAdd,
|
||||
IsPager = programModel.IsPager,
|
||||
RowNumber = programModel.RowNumber,
|
||||
Name = programModel.Name,
|
||||
ProgramButtons = new ProgramButton().GetAllByProgramId(programModel.Id),
|
||||
ProgramExports = new ProgramExport().GetAllByProgramId(programModel.Id),
|
||||
ProgramFields = new ProgramField().GetAllByProgramId(programModel.Id),
|
||||
ProgramQueries = new ProgramQuery().GetAllByProgramId(programModel.Id),
|
||||
ProgramValidates = new ProgramValidate().GetAllByProgramId(programModel.Id),
|
||||
PublishTime = programModel.PublishTime,
|
||||
SelectColumn = programModel.SelectColumn,
|
||||
SqlString = programModel.SqlString,
|
||||
Status = programModel.Status,
|
||||
TableHead = programModel.TableHead,
|
||||
TableStyle = programModel.TableStyle,
|
||||
Type = programModel.Type.ToGuid(),
|
||||
Width = programModel.Width,
|
||||
GroupHeaders = programModel.GroupHeaders,
|
||||
DefaultSort = programModel.DefaultSort,
|
||||
EditEvents = programModel.EditEvents
|
||||
};
|
||||
programRunModel.QueryHtml = VueGetRunHtml(programRunModel, localizer);
|
||||
_memoryCache.Set(key, programRunModel);
|
||||
}
|
||||
|
||||
//替换按钮
|
||||
if (userModel != null)
|
||||
{
|
||||
var (normalButton, listButton) = VueGetButtons(programRunModel.ProgramButtons, userModel, menuId);
|
||||
programRunModel.QueryHtml = programRunModel.QueryHtml.Replace("{<button-normal>}", normalButton);
|
||||
foreach (JObject jObject in programRunModel.Cols)
|
||||
{
|
||||
if (jObject.ContainsKey("buttons"))
|
||||
{
|
||||
jObject["buttons"] = listButton;
|
||||
}
|
||||
}
|
||||
}
|
||||
return programRunModel;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 得到运行时VUE组件HTML
|
||||
/// </summary>
|
||||
/// <param name="programRun"></param>
|
||||
/// <param name="localizer">语言包</param>
|
||||
/// <returns></returns>
|
||||
public string VueGetRunHtml(Model.ProgramRun programRunModel, IStringLocalizer localizer = null)
|
||||
{
|
||||
if (programRunModel == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
StringBuilder html = new StringBuilder();
|
||||
#region 查询字段
|
||||
string queryHtml = VueGetQueryHtml(programRunModel.ProgramQueries, localizer);
|
||||
html.Append("<div style='padding:0 10px;'>");
|
||||
html.Append(queryHtml);
|
||||
//查询按钮(查询后面)
|
||||
if (programRunModel.ButtonLocation == 1)
|
||||
{
|
||||
if (!queryHtml.IsNullOrWhiteSpace())
|
||||
{
|
||||
html.Append("<roadui-button @click.native=\"query()\">" + (localizer == null ? "查询" : localizer["Query"].Value) + "</roadui-button>");
|
||||
}
|
||||
//{<button-normal>}作为占位符,实际运行时根据当前用户获取有权限的按钮填充。
|
||||
html.Append("{<button-normal>}");
|
||||
}
|
||||
html.Append("</div>");
|
||||
//查询按钮(新行)
|
||||
if (programRunModel.ButtonLocation == 0)
|
||||
{
|
||||
html.Append("<div style='text-align:center;margin:15px 0 10px 0;'>" + (queryHtml.IsNullOrWhiteSpace() ? string.Empty : "<roadui-button @click.native=\"query()\">" + (localizer == null ? "查询" : localizer["Query"].Value) + "</roadui-button>") + "{<button-normal>}</div>");
|
||||
}
|
||||
#endregion
|
||||
#region 列表
|
||||
html.Append("<roadui-table style=\"margin-top:15px;\" :cols=\"cols\" :rows=\"table.rows\" :loading=\"loading\" :total=\"table.total\""
|
||||
+ " :pagenumber.sync=\"number\" :pagesize.sync=\"size\" :ordertype=\"0\" :height=\"tableHeight\""
|
||||
+ (programRunModel.RowNumber == 1 ? " number" : "")
|
||||
+ (programRunModel.SelectColumn == 2 ? " checkbox" : programRunModel.SelectColumn == 1 ? " radio" : "") + " v-model=\"selectRows\""
|
||||
+ (programRunModel.TableHead.IsNullOrWhiteSpace() ? "" : " :mythead=\"myThead\"")
|
||||
+ " :pager=\"" + (programRunModel.IsPager == 1 ? "true" : "false") + "\" :order.sync=\"order\" @load=\"query\"></roadui-table>");
|
||||
programRunModel.Cols = VueGetCols(programRunModel.ProgramFields);
|
||||
#endregion
|
||||
return html.ToString();
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取按钮
|
||||
/// </summary>
|
||||
/// <param name="programButtons"></param>
|
||||
/// <param name="userModel"></param>
|
||||
/// <param name="menuId">菜单id</param>
|
||||
/// <returns>(常规按钮,列表按钮)</returns>
|
||||
public (string, JArray) VueGetButtons(List<Model.rf_programbutton> programButtons, SysUser userModel, string menuId)
|
||||
{
|
||||
StringBuilder button_normal = new StringBuilder();
|
||||
JArray button_list = new JArray();
|
||||
|
||||
List<Model.rf_menuuser> menuusers = new MenuUser().GetAll();
|
||||
Menu menu = new Menu();
|
||||
SystemButton systemButton = new SystemButton();
|
||||
string language = Tools.GetCurrentLanguage();
|
||||
foreach (var button in programButtons.OrderBy(p => p.Sort))
|
||||
{
|
||||
//检查权限
|
||||
if (1 == button.IsValidateShow)
|
||||
{
|
||||
if (!menu.HasUseButton(menuId, button.Id, userModel.Id, menuusers))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
string butName = button.ButtonName;
|
||||
string ico = button.Ico;
|
||||
string note = button.Note;
|
||||
if (button.ShowType == 1)//常规按钮
|
||||
{
|
||||
button_normal.Append("<roadui-button");
|
||||
button_normal.Append(" @click.native=\"execScript('" + RoadFlow.Business.Wildcard.Filter(button.ClientScript, userModel).UrlEncode() + "')\"");
|
||||
if (!ico.IsNullOrWhiteSpace())
|
||||
{
|
||||
button_normal.Append(" ico=\"" + ico + "\"");
|
||||
}
|
||||
if (!note.IsNullOrWhiteSpace())
|
||||
{
|
||||
button_normal.Append(" title=\"" + note + "\"");
|
||||
}
|
||||
button_normal.Append(">");
|
||||
if (!butName.IsNullOrWhiteSpace())
|
||||
{
|
||||
button_normal.Append(butName);
|
||||
}
|
||||
button_normal.Append("</roadui-button>");
|
||||
}
|
||||
else if (button.ShowType == 2)//列表按钮 不替换通配符,列表按钮涉及运行时数据,在运行时替换。
|
||||
{
|
||||
button_list.Add(new JObject()
|
||||
{
|
||||
{ "title", butName },
|
||||
{ "ico", ico },
|
||||
{ "fun", RoadFlow.Business.Wildcard.Filter(button.ClientScript, userModel).UrlEncode()},
|
||||
{ "note", note },
|
||||
});
|
||||
}
|
||||
}
|
||||
return (button_normal.ToString(), button_list);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 得到VUE查询HTML
|
||||
/// </summary>
|
||||
/// <param name="programQueries"></param>
|
||||
/// <param name="localizer">语言包</param>
|
||||
/// <returns></returns>
|
||||
public string VueGetQueryHtml(List<Model.rf_programquery> programQueries, IStringLocalizer localizer = null)
|
||||
{
|
||||
if (null == programQueries)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
StringBuilder query_controls = new StringBuilder();
|
||||
foreach (var query in programQueries)
|
||||
{
|
||||
string title = query.ShowTitle.IsNullOrWhiteSpace() ? query.Field : query.ShowTitle;
|
||||
string controlName = query.ControlName.IsNullOrWhiteSpace() ? "ctl_" + query.Id : query.ControlName;
|
||||
query_controls.Append("<span style=\"margin-right:8px;display:inline-block;word-wrap:break-word;white-space:normal;\">");
|
||||
query_controls.Append(title + ":");
|
||||
switch (query.InputType)
|
||||
{
|
||||
case 0: //文本框
|
||||
query_controls.Append("<roadui-text");
|
||||
query_controls.Append(" v-model='find." + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("></roadui-text>");
|
||||
break;
|
||||
case 1://日期
|
||||
query_controls.Append("<roadui-calendar");
|
||||
query_controls.Append(" v-model='find." + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("></roadui-calendar>");
|
||||
break;
|
||||
case 2://日期范围
|
||||
query_controls.Append("<roadui-calendar");
|
||||
query_controls.Append(" v-model='find." + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("></roadui-calendar>");
|
||||
query_controls.Append(localizer == null ? " 至 " : localizer["To"].Value);
|
||||
query_controls.Append("<roadui-calendar");
|
||||
query_controls.Append(" v-model='find." + controlName + "1'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("></roadui-calendar>");
|
||||
break;
|
||||
case 3://日期时间
|
||||
query_controls.Append("<roadui-calendar time='HH:mm'");
|
||||
query_controls.Append(" v-model='find." + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("></roadui-calendar>");
|
||||
break;
|
||||
case 4://日期时间范围
|
||||
query_controls.Append("<roadui-calendar time='HH:mm'");
|
||||
query_controls.Append(" v-model='find." + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("></roadui-calendar>");
|
||||
query_controls.Append(localizer == null ? " 至 " : localizer["To"].Value);
|
||||
query_controls.Append("<roadui-calendar time='HH:mm'");
|
||||
query_controls.Append(" v-model='find." + controlName + "1'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
query_controls.Append("></roadui-calendar>");
|
||||
break;
|
||||
case 5://下拉选项
|
||||
query_controls.Append("<roadui-combox");
|
||||
query_controls.Append(" v-model='find." + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
switch (query.DataSource.Value)
|
||||
{
|
||||
case 0://字符串表达式
|
||||
query_controls.Append(" :source=\"{type:1,str:'" + query.DataSourceString.UrlEncode().Replace("'", "\\'") + "'}\"");
|
||||
break;
|
||||
case 1://数据字典
|
||||
query_controls.Append(" :source=\"{type:0,dictId:'" + query.DataSourceString + "',childs:1,valueField:'" + query.DictValue + "'}\"");
|
||||
break;
|
||||
case 2://SQL
|
||||
query_controls.Append(" :source=\"{type:2,connId:'" + query.ConnId + "',sql:'" + query.DataSourceString.UrlEncode().Replace("'", "\\'") + "'}\"");
|
||||
break;
|
||||
}
|
||||
query_controls.Append("></roadui-combox>");
|
||||
break;
|
||||
case 6://组织机构选择
|
||||
query_controls.Append("<roadui-org");
|
||||
query_controls.Append(" v-model='find." + controlName + "'");
|
||||
if (!query.ShowStyle.IsNullOrWhiteSpace())
|
||||
{
|
||||
query_controls.Append(" style=\"" + query.ShowStyle + "\"");
|
||||
}
|
||||
JObject orgJObject = query.OrgAttribute.ToJObject();
|
||||
if (!orgJObject.IsEmptyJObject())
|
||||
{
|
||||
string selectrange = orgJObject.Value<string>("selectrange");//选择范围
|
||||
string multiple = orgJObject.Value<string>("multiple");//多选
|
||||
JArray selecttype = orgJObject.Value<JArray>("selecttype");//选择类型
|
||||
JArray selecttype1 = new JArray();
|
||||
foreach (JValue j in selecttype)
|
||||
{
|
||||
if (!j.ToString().IsNullOrWhiteSpace())
|
||||
{
|
||||
selecttype1.Add(j);
|
||||
}
|
||||
}
|
||||
if (selecttype1.Count == 0)//没有设置时为全部可选
|
||||
{
|
||||
selecttype1.Add("unit");
|
||||
selecttype1.Add("dept");
|
||||
selecttype1.Add("station");
|
||||
selecttype1.Add("user");
|
||||
selecttype1.Add("workgroup");
|
||||
}
|
||||
query_controls.Append("1".Equals(multiple) ? " multiple" : "");
|
||||
query_controls.Append(selectrange.IsNullOrWhiteSpace() ? "" : " root='" + selectrange + "'");
|
||||
query_controls.Append(" :selecttype='" + selecttype1.ToString(Newtonsoft.Json.Formatting.None) + "'");
|
||||
}
|
||||
query_controls.Append("></roadui-org>");
|
||||
break;
|
||||
}
|
||||
query_controls.Append("</span>");
|
||||
}
|
||||
return query_controls.ToString();
|
||||
}
|
||||
/// <summary>
|
||||
/// 得到列设置
|
||||
/// </summary>
|
||||
/// <param name="programFields"></param>
|
||||
/// <returns></returns>
|
||||
public JArray VueGetCols(List<Model.rf_programfield> programFields)
|
||||
{
|
||||
JArray jArray = new JArray
|
||||
{
|
||||
//添加id列
|
||||
new JObject()
|
||||
{
|
||||
{ "name", "Id" },
|
||||
{ "title", "" },
|
||||
{ "order", "none" },
|
||||
{ "width", "" },
|
||||
{ "key", true },
|
||||
{ "show", 0 },
|
||||
}
|
||||
};
|
||||
foreach (var field in programFields)
|
||||
{
|
||||
JObject jObject = new JObject() {
|
||||
{ "name", field.Field },
|
||||
{ "title", field.ShowTitle.IsNullOrEmpty() ? field.Field :field.ShowTitle },
|
||||
{ "width", field.Width },
|
||||
{ "align", field.Align },
|
||||
};
|
||||
if (field.IsSort.IsNullOrWhiteSpace())
|
||||
{
|
||||
jObject.Add("order", "none");
|
||||
}
|
||||
if (field.IsShow == 0)
|
||||
{
|
||||
jObject.Add("show", 0);
|
||||
}
|
||||
if (field.ShowType == 100)//操作列
|
||||
{
|
||||
jObject["name"] = "Opation";
|
||||
jObject["order"] = "none";
|
||||
jObject.Add("type", "buttons");
|
||||
jObject.Add("buttons", new JArray());
|
||||
}
|
||||
else if (field.ShowType == 1)//序号列
|
||||
{
|
||||
jObject["name"] = "RowSerialNumber";
|
||||
}
|
||||
else if (field.ShowType.In(8, 9, 10))//显示附件,全部显示,不省略内容, 列加属性noellipsis:true
|
||||
{
|
||||
jObject.Add("noellipsis", true);
|
||||
}
|
||||
jArray.Add(jObject);
|
||||
}
|
||||
return jArray;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user