758 lines
37 KiB
C#
758 lines
37 KiB
C#
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;
|
||
}
|
||
|
||
}
|
||
}
|