Files
number_zj/20220330_Vote/Ewide.RoadFlow/Data/Program/Program.cs
2022-03-30 17:54:33 +08:00

758 lines
37 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;
}
}
}