wtm框架学习 2


页面权限(比如可以进入订单查询界面)

  • 设置权限得把appsettings.json里的debug关掉
  • 设置好菜单后,并没有权限访问页面。 需要到角色管理 -> 页面权限里去关闭再打开权限,才会生效
  • API同上。必须再菜单里设置,只不过不显示。 然后到角色管理 -> 页面权限里去关闭再打开权限,才会生效

数据权限(比如店长只能看见自己店的订单)

  • 首先是program.cs
var pris = new List<IDataPriviledge>{
    new DataPriviledgeInfo<City>("地点", y => y.Name), 
}
x.AddFrameworkService(dataPriviledgeSettings:pris);
  • 然后是相应页面的viewmodel里的查询语句
//写在select上面
.DPWhere(LoginUserInfo.DataPriviledges, x => x.LocationId) //写多个lamda表达式(逗号分割)就是or的关系
//再写一个.DPWhere就形成了and关系
  • 最后去系统内对用户/用户组设置数据权限

更细的数据权限(比如销售只能看见自己开的订单)

这种情况不属于wtm的"数据权限"的概念, 因为完全可以这么写.Where(x => x.UpdateBy == LoginUserInfo.Id)

自定义用户

  • 首先新建一个类, 继承用户基类
    [Table("FrameworkUsers")] //表示还是用原来的数据表
    public class MyUser : FrameworkUserBase //继承WTM用户基类
    {
        [Display(Name = "附加信息1")]
        public string Extra1 { get; set; }
        [Display(Name = "附加信息2")]
        public string Extra2 { get; set; }
    }
  • 然后在DataContext里增加DbSet
    public DbSet<MyUser> MyUsers { get; set; }
  • 生成代码
  • 在MyUserController.cs内的vm.DoAdd();上增加一句代码vm.Entity.Password = Utils.GetMD5String(vm.Entity.Password);
  • 最后要实现用户登录以后的赋值(到LoginUserInfo内)
// LoginVm.cs
//查找DoLogin
var user = DC.Set<MyUser>() //将整个系统的登录用户的模型改成自定义的这个
//查找LoginUserInfo rv 
Attributes= new Dictionary<string,object>() { ["Extra1"] = user.Extra1 } //把所有附加信息以字典形式赋值到一个属性里
//cshtml中
@Model.LoginUserInfo.Attributes["Extra1"]
  • 增加菜单项

ListVM

  • 不要分页的话在ListVM中增加构造函数(原来没有), 添加代码NeedPage=false;

view里的taghelper

  • 分页数量在前台页面的分页wt:grid中加上属性limit="50"
  • 不想显示checkbox也是wt:grid中加上属性hidden-checkbox="true"
  • 不想显示序号也是wt:grid中加上属性hidden-grade-index="true"

InitGridHeader()可以做很多事

  • 对某个列实现排序, 想排序的列加上.SetSort()即可
  • 格式化某个列, 加上SetFormat方法, 如.SetFormat((a,b)=>a.Birthday.Value.ToShortDateString()), 此处lamda表示传入a,b参数, 返回箭头后的东西
  • 增加一个新列, 如this.MakeGridHeader(x=>"Test").SetHeader("测试").SetFormat((a,b)=>"aaaa")

自定义方法(详见视频教程ListVM第一段和第四段)

  • 在listvm内添加一个按钮
  • 在controller内复制一组ActionResult, 有[HttpPost]的那个是最终提交, 是实际操作数据的方法; 没有的是用户点击按钮之后的方法, 作用是创建vm并绑定到弹窗里的view及其控件.
  • 对ActionReuslt的两个方法设置传参(比如Guid id)
  • 新建view(根据情况, 可从Edit.cshtml复制并修改)
  • 其他可配置项:
SetShowInRow() //在每一行显示
SetHideOnToolBar() //顶部隐藏本按钮
SetShowDialog(false).SetIsRedirect(true)//点击按钮会打开新标签页
  • 若要根据条件显示隐藏按钮, 可增加一个新列, 如
this.MakeGridHeader(x=>"Test").SetHeader("显示隐藏按钮专用列").SetHide().SetFormat((a,b)=>{
    if(a.Status!=PatientStatusEnum.SiWang){return "true";}
    return "false";
})

行变色需要这么写

public override string SetFullRowBgColor(object Entity){
    {class}_view p=({class}_view)entity;
    if (p.Status=="good"){ return "#FF0000" }
    return "";

}

高级用法

在某条数据的详情弹窗里显示关联数据: 详见视频教程ListVM第三部分


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM