UOF2 客製 外掛欄位 顯示申請者的詳細資訊 | BPM | EIP | 一等一科技

by | 4 月 17, 2026 | 未分類 | 0 comments

Views: 3

這個教學的目標一個是怎麼取得申請者的進階資訊,然後顯示在表單上,我原本寫了一個進階的版本…..發現不容易解釋我寫了什麼,我還是先寫簡單版的。

客製目標

固定顯示特定的使用者資訊在申請欄位上

Image

外掛欄位產生器

Image

  • 外掛欄位代號:ShowApplyInfo
  • 設計畫面名稱:ShowApplyInfo_OptionField.aspx
  • 表單填寫之檔案名稱:ShowApplyInfoUC.ascx

這邊依照自己需求簡單填一下,接著匯出外掛欄位Image

接著會產生兩個檔案

Image

  • ShowApplyInfoUC.ascx
  • ShowApplyInfoUC.ascx.cs

程式碼-ShowApplyInfoUC.ascx

基本上就看你需求是什麼,自己保留需要的欄位,刪除用不到的欄位

這邊我把欄位大致上都列上去了,全部都寫在前端

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ShowApplyInfoUC.ascx.cs" Inherits="WKF_OptionalFields_ShowApplyInfoUC" %>
<%@ Import Namespace="Ede.Uof.WebApi.M.ViewModels.EIP" %>
<%@ Import Namespace="Ede.Uof.EIP.SystemInfo" %>
<%@ Import Namespace="Ede.Uof.EIP.Organization.Util" %>
<%@ Reference Control="~/WKF/FormManagement/VersionFieldUserControl/VersionFieldUC.ascx" %>

<%
    string guid;
    if (taskObj != null && taskObj.Applicant != null)
    {
        guid = taskObj.Applicant.UserGUID;
    }
    else
    {
        guid = Current.UserGUID;
    }

    var userUco = new UserUCO();
    var ebUser = userUco.GetEBUser(guid);

%>
<table class="PopTable">
    <tr>
        <td>帳號</td>
        <td><%= ebUser.Account %></td>
        <td>姓名</td>
        <td><%= ebUser.Name %></td>

    </tr>
    <tr>
        <td>部門</td>
        <td><%= ebUser.GroupName %></td>
        <td>職務</td>
        <td><%= ebUser.JobTitle %></td>
    </tr>
    <tr>
        <td>姓名(帳號)</td>
        <td><%= ebUser.NameWithAccount %></td>
        <td>到職日</td>
        <td><%= ebUser.ArriveDate?.ToString("yyyy/MM/dd") %></td>
    </tr>
    <tr>
        <td>Email</td>
        <td><%= ebUser.Email %></td>
        <td>工號</td>
        <td><%= ebUser.EmployeeNo %></td>
    </tr>
    <tr>
        <td>分機</td>
        <td><%= ebUser.ExtNum %></td>
        <td>生日</td>
        <td><%= ebUser.Birthday?.ToString("yyyy/MM/dd") %></td>
    </tr>
    <tr>
        <td>ERP帳號(Option1)</td>
        <td><%= ebUser.Option1 %></td>
        <td>飲食習慣(Option2)</td>
        <td><%= ebUser.Option2 %></td>
    </tr>
    <tr>
        <td>車號(Option3)</td>
        <td><%= ebUser.Option3 %></td>
        <td>公務車位(Option4)</td>
        <td><%= ebUser.Option4 %></td>
    </tr>
    <tr>
        <td>Option5</td>
        <td><%= ebUser.Option5 %></td>
        <td>Option6</td>
        <td><%= ebUser.Option6 %></td>
    </tr>
</table>


<asp:Label ID="lblHasNoAuthority" runat="server" Text="無填寫權限" ForeColor="Red" Visible="False" meta:resourcekey="lblHasNoAuthorityResource1"></asp:Label>
<asp:Label ID="lblToolTipMsg" runat="server" Text="不允許修改(唯讀)" Visible="False" meta:resourcekey="lblToolTipMsgResource1"></asp:Label>
<asp:Label ID="lblModifier" runat="server" Visible="False" meta:resourcekey="lblModifierResource1"></asp:Label>
<asp:Label ID="lblMsgSigner" runat="server" Text="填寫者" Visible="False" meta:resourcekey="lblMsgSignerResource1"></asp:Label>
<asp:Label ID="lblAuthorityMsg" runat="server" Text="具填寫權限人員" Visible="False" meta:resourcekey="lblAuthorityMsgResource1"></asp:Label>

關鍵點說明

    string guid;
    if (taskObj != null && taskObj.Applicant != null)
    {
        guid = taskObj.Applicant.UserGUID;
    }
    else
    {
        guid = Current.UserGUID;
    }

    var userUco = new UserUCO();
    var ebUser = userUco.GetEBUser(guid);

我把物件直接寫在前端,這算是ASP.NET 的其中一個彈性(雖然寫起來比較..髒),不過很適合這篇教學的用法,

  1. 判斷是不是在簽核中,簽核中才會有taskObj 這個物件,如果沒有就顯示現在使用者
  2. 讀取使用者資訊要透過UserUCO()取得使用者的物件EBUser

後端程式碼

這邊基本上不需要改任何東西就能用了,所以我省略掉

完整程式碼

gist

0 Comments

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *