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