149 lines
3.1 KiB
C#
149 lines
3.1 KiB
C#
/////////////////////////////////////////////////////////////////////////////////
|
|
// 宁波拓通e智造平台 ToTong Next Builder //
|
|
// https://git.tuotong-tech.com/tnb/tnb.server //
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
using Yitter.IdGenerator;
|
|
|
|
namespace Tnb.Vengine.Domain;
|
|
|
|
/// <summary>
|
|
/// 字段属性
|
|
/// </summary>
|
|
public class VmDbProp : VmBaseProp
|
|
{
|
|
#region Properties
|
|
/// <summary>
|
|
/// 字段名称
|
|
/// </summary>
|
|
public string field { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 数据类型
|
|
/// </summary>
|
|
public string dataType { get; set; } = "varchar";
|
|
|
|
/// <summary>
|
|
/// 数据类型
|
|
/// </summary>
|
|
public string? csType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 长度
|
|
/// </summary>
|
|
public int length { get; set; }
|
|
|
|
/// <summary>
|
|
/// 精度
|
|
/// </summary>
|
|
public int digit { get; set; }
|
|
|
|
/// <summary>
|
|
/// 排序
|
|
/// </summary>
|
|
public int ordinal { get; set; }
|
|
|
|
/// <summary>
|
|
/// 非空
|
|
/// </summary>
|
|
public bool required { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否主键
|
|
/// </summary>
|
|
public bool pkey { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否模糊搜索
|
|
/// </summary>
|
|
public bool fuzzy { get; set; }
|
|
|
|
/// <summary>
|
|
/// 默认值
|
|
/// </summary>
|
|
public string? defValue { get; set; }
|
|
|
|
/// <summary>
|
|
/// 描述
|
|
/// </summary>
|
|
public string? descrip { get; set; }
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 获取默认值
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public object? GetDefaultValue()
|
|
{
|
|
object? val = null;
|
|
if (string.IsNullOrEmpty(defValue))
|
|
{
|
|
val = defValue switch
|
|
{
|
|
"@@snowid" => YitIdHelper.NextId().ToString(),
|
|
"@@now" => DateTime.Now,
|
|
"@@userid" => YitIdHelper.NextId().ToString(),
|
|
"@@orgid" => YitIdHelper.NextId().ToString(),
|
|
_ => null
|
|
};
|
|
}
|
|
else
|
|
{
|
|
val = csType switch
|
|
{
|
|
"string" => string.Empty,
|
|
"short" or "int" or "long" => 0,
|
|
"float" or "double" or "decimal" => 0f,
|
|
"DateTime" => DateTime.Now,
|
|
_ => null
|
|
};
|
|
}
|
|
return val;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取默认宽度
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string GetDefaultWidth()
|
|
{
|
|
return csType switch
|
|
{
|
|
"string" => "\"width\": \"auto\"",
|
|
"int" or "short" or "long" => "\"width\": 80",
|
|
"DateTime" => "\"width\": 150",
|
|
_ => ""
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取默认组件
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public CompOption GetDefaultComp()
|
|
{
|
|
CompOption comp = new CompOption();
|
|
if (pkey)
|
|
{
|
|
comp.attr.Add("disabled", true);
|
|
return comp;
|
|
}
|
|
switch (csType)
|
|
{
|
|
case "string":
|
|
comp.attr.Add("clearable", true);
|
|
comp.attr.Add("maxlength", length);
|
|
comp.attr.Add("showWordLimit", true);
|
|
break;
|
|
case "int":
|
|
case "short":
|
|
case "long":
|
|
comp.type = "el-input-number";
|
|
break;
|
|
case "DateTime":
|
|
comp.type = "el-date-picker";
|
|
break;
|
|
};
|
|
return comp;
|
|
}
|
|
} |