|
|
|
|
using VOL.Core.Dapper;
|
|
|
|
|
using VOL.Core.DBManager;
|
|
|
|
|
using VOL.Core.EFDbContext;
|
|
|
|
|
using VOL.Core.Extensions;
|
|
|
|
|
using VOL.Entity.DomainModels;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Data;
|
|
|
|
|
//using System.Data.SqlClient;
|
|
|
|
|
using Microsoft.Data.SqlClient;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using ConvertHelper;
|
|
|
|
|
|
|
|
|
|
namespace VOL.Core.BaseProvider.DictionaryComponent
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 组件视图,参照:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components?view=aspnetcore-2.1
|
|
|
|
|
/// 与Controller命名一样必须以ViewComponent结尾
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class DictionaryViewComponent : ViewComponent
|
|
|
|
|
{
|
|
|
|
|
public async Task<IViewComponentResult> InvokeAsync(string dropDownIds)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(dropDownIds))
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
string[] dicNos = dropDownIds.Split(',');
|
|
|
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
|
|
|
VOLContext context = DBServerProvider.GetEFDbContext();
|
|
|
|
|
var dicData =await (from d in context.Set<Sys_Dictionary>()
|
|
|
|
|
join list in context.Set<Sys_DictionaryList>()
|
|
|
|
|
on d.Dic_ID equals list.Dic_ID
|
|
|
|
|
into t
|
|
|
|
|
from list in t.DefaultIfEmpty()
|
|
|
|
|
where dicNos.Contains(d.DicNo)
|
|
|
|
|
select new { list.DicValue, list.DicName, d.Config, d.DbSql, list.OrderNo, d.DicNo }).ToListAsync();
|
|
|
|
|
|
|
|
|
|
foreach (var item in dicData.GroupBy(x => x.DicNo))
|
|
|
|
|
{
|
|
|
|
|
stringBuilder.AppendLine($" var optionConfig{item.Key} = {item.Select(x => x.Config).FirstOrDefault()}");
|
|
|
|
|
|
|
|
|
|
string dbSql = item.Select(s => s.DbSql).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
stringBuilder.AppendLine($@" var dataSource{item.Key} = {
|
|
|
|
|
(!string.IsNullOrEmpty(dbSql)
|
|
|
|
|
? DBServerProvider.GetSqlDapper().QueryList<object>(dbSql, null).Serialize()
|
|
|
|
|
: item.OrderByDescending(o => o.OrderNo).
|
|
|
|
|
Select(s => new { s.DicName, s.DicValue }).ToList()
|
|
|
|
|
.Serialize())
|
|
|
|
|
}.convertToValueText(optionConfig{item.Key})");
|
|
|
|
|
stringBuilder.AppendLine($" optionConfig{item.Key}.data = dataSource{item.Key};");
|
|
|
|
|
}
|
|
|
|
|
ViewBag.Dic = stringBuilder.ToString();
|
|
|
|
|
return View("~/Views/Shared/Dictionary.cshtml");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|