Views: 5
因為公司要的需求常常挺複雜的,我自己逆向後發展了一個開發時會用的開發欄位,整理後放在這邊,我簡單叫這個為UOF2 DEBUGGER好了,有需要的可以拿去用,程式本身可以顯示目前的TASK ID 、SITE ID、申請者、簽核者、目前登入者、目前登入者名稱、目前站點代碼、簽核歷程、每個簽核的SITE ID ,對於比較複雜的開發有一定的幫助。
說明
這東西當時是需要做出兩個特殊按鈕時候做的
- 通過 (送到下一站)
- 不通過(退簽到特定SITE CODE)
程式碼我有稍微整理過了,需要的可以自己拿去用。
程式本身可以顯示目前的TASK ID 、SITE ID、申請者、簽核者、目前登入者、目前登入者名稱、目前站點代碼、簽核歷程、每個簽核的SITE ID
產生外掛欄位
這邊照自己需求命名就好,我把它稱為UOF2_DEBUGGER
動作 → 匯出成外掛欄位(C#) UOF18.5以上
- plugIn.xml → 這邊選網站目錄下的 App_Data\plugin.xml
- 匯出外掛欄位,這邊選CDS下的目錄,我放在WKF目錄當中
- 匯出
UOF2_DEBUGGER_UC.ascx 程式碼
程式碼貼上後請依照自己需求調整,然後加到你開發中的表單。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UOF2_DEBUGGER_UC.ascx.cs" Inherits="WKF_OptionalFields_UOF2_DEBUGGER_UC" %>
<%@ Reference Control="~/WKF/FormManagement/VersionFieldUserControl/VersionFieldUC.ascx" %>
<%@ Reference Control="~/WKF/FormManagement/VersionFieldUserControl/VersionFieldUC.ascx" %>
<%@ Register Assembly="Ede.Uof.Utility.Component.Grid" Namespace="Ede.Uof.Utility.Component" TagPrefix="Fast" %>
<%@ Import Namespace="Ede.Uof.EIP.SystemInfo" %>
<%@ Register Src="~/Common/ChoiceCenter/UC_ChoiceList.ascx" TagPrefix="uc1" TagName="UC_ChoiceList" %>
<script type="text/javascript">
function confirmSend() {
return confirm("確定要同意嗎? 會送至下一站");
}
function confirmReturn() {
return confirm("確定要退回嗎?");
}
</script>
<table class="PopTable">
<tr>
<td style="text-align: center;" class="PopTableHeader" colspan="4">
<center>
<asp:Label ID="Label3" runat="server" Text="站點資訊" meta:resourcekey="Label1Resource3"></asp:Label>
</center>
</td>
</tr>
<tr>
<td>TASK ID</td>
<td>
<asp:Label runat="server" ID="lbTaskID"></asp:Label></td>
<td>SiteID目前站點</td>
<td>
<asp:Label runat="server" ID="lbSiteID"></asp:Label>
</td>
</tr>
<tr>
<td>nodeSeq</td>
<td>
<asp:Label runat="server" ID="lbNodeSeq"></asp:Label></td>
<td>isFreeTask自由流程</td>
<td>
<asp:Label runat="server" ID="lbIsFreeTask"></asp:Label></td>
</tr>
<tr>
<td>ApplicantGuid 申請者GUID</td>
<td>
<asp:Label runat="server" ID="lbApplicantGuid"></asp:Label></td>
<td>fieldOptional.FieldMode 目前簽核狀態</td>
<td>
<asp:Label runat="server" ID="lblFieldMode"></asp:Label></td>
</tr>
<tr>
<td>ApplicantGroupId 申請者群組ID</td>
<td>
<asp:Label runat="server" ID="lbApplicantGroupId"></asp:Label>
</td>
<td>SiteCode 目前站點代碼</td>
<td>
<asp:Label runat="server" ID="lblSiteCode"></asp:Label>
</td>
</tr>
<tr>
<td>Current.UserGUID 目前登入者GUID</td>
<td><%= Current.UserGUID %></td>
<td>Current.User.Name 目前登入者名稱</td>
<td><%= Current.User.Name %></td>
</tr>
</table>
<label>退簽測試</label>
<Fast:Grid ID="grdReturnSiteList" runat="server" AllowSorting="True" AutoGenerateCheckBoxColumn="False"
AutoGenerateColumns="False" DataKeyOnClientWithCheckBox="False"
EnhancePager="True" PageSize="15"
Width="100%" OnRowDataBound="grdReturnSiteList_RowDataBound" OnRowCommand="grdReturnSiteList_RowCommand">
<EnhancePagerSettings
ShowHeaderPager="True" FirstAltImageUrl="" FirstImageUrl="" LastAltImage="" LastImageUrl="" NextIAltImageUrl="" NextImageUrl="" PageInfoCssClass="" PageNumberCssClass="" PageNumberCurrentCssClass="" PageRedirectCssClass="" PreviousAltImageUrl="" PreviousImageUrl="" />
<Columns>
<asp:TemplateField HeaderText="站點" meta:resourcekey="TemplateFieldResource1">
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle Wrap="False" />
<ItemTemplate>
<asp:Label runat="server" ID="lblSite" __designer:wfdid="w1" meta:resourcekey="lblSiteResource1"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="站點型態" meta:resourcekey="TemplateFieldResource2">
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle Wrap="False" />
<ItemTemplate>
<asp:Label runat="server" ID="lblSignType" __designer:wfdid="w4" meta:resourcekey="lblSignTypeResource1"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="原簽核者" meta:resourcekey="TemplateFieldResource3">
<HeaderStyle Wrap="False" />
<ItemTemplate>
<asp:Label runat="server" ID="lblOriginalSigner" __designer:wfdid="w2" meta:resourcekey="lblOriginalSignerResource1"></asp:Label>
<asp:Label runat="server" ID="lblOrginialSignerExcept" __designer:wfdid="w2" Text="簽核者帳號異常" Visible="false" ForeColor="Red"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="實際簽核者" meta:resourcekey="TemplateFieldResource4">
<HeaderStyle Wrap="False" />
<ItemTemplate>
<asp:Label runat="server" ID="lblActuralSigner" __designer:wfdid="w2" meta:resourcekey="lblActuralSignerResource1"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="站點備註" meta:resourcekey="TemplateFieldResource6">
<HeaderStyle Wrap="False" />
<ItemTemplate>
<asp:Label runat="server" ID="lblSiteRemark"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="操作" meta:resourcekey="TemplateFieldResource5">
<ItemStyle Wrap="False" HorizontalAlign="Center" />
<HeaderStyle Wrap="False" />
<ItemTemplate>
<asp:Button runat="server" ID="btnReturn" Text="退簽" CommandName="Return" __designer:wfdid="w2" meta:resourcekey="btnReturnResource1"></asp:Button>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="退簽站點 Site_Id" meta:resourcekey="TemplateFieldResource5">
<ItemStyle Wrap="False" HorizontalAlign="Center" />
<HeaderStyle Wrap="False" />
<ItemTemplate>
<asp:Label runat="server" ID="lblSiteId"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="SITE CODE" meta:resourcekey="TemplateFieldResource5">
<ItemStyle Wrap="False" HorizontalAlign="Center" />
<HeaderStyle Wrap="False" />
<ItemTemplate>
<asp:Label runat="server" ID="lblSITE_CODE"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</Fast:Grid>
<div id="divMemberReturn" runat="server">
<table class="PopTable">
<tr>
<td style="text-align: center;" class="PopTableHeader" colspan="4">
<center>
<asp:Label ID="Label1" runat="server" Text="退簽對象" meta:resourcekey="Label1Resource3"></asp:Label>
</center>
</td>
</tr>
<tr>
<td class="PopTableLeftTD" style="width: 15%">
<asp:Label ID="lblSignType" runat="server" Text="簽核型態" meta:resourcekey="TemplateFieldResource2"></asp:Label>
</td>
<td class="PopTableRightTD" style="width: 25%">
<asp:Label ID="lblSignTypeValue" runat="server"></asp:Label>
</td>
<td class="PopTableLeftTD" style="width: 15%">
<asp:Label ID="lblSigner" runat="server" Text="原簽核者" meta:resourcekey="TemplateFieldResource3"></asp:Label>
</td>
<td class="PopTableRightTD" style="width: 45%">
<uc1:UC_ChoiceList runat="server" ID="UC_ChoiceList" IsAllowEdit="false" />
</td>
</tr>
</table>
<asp:Label runat="server" ID="lblSignerExcept" Text="簽核者帳號異常" Visible="false" ForeColor="Red"></asp:Label>
<asp:HiddenField ID="hfLastSignType" runat="server" />
<asp:Label ID="lblAllowRAMember" runat="server" Text="表單已被設定為不允許退回申請者,無法退簽。" Visible="false" ForeColor="Blue" meta:resourcekey="lblAllowRAMemberResource1"></asp:Label>
</div>
<asp:HiddenField runat="server" ID="hfLastSiteId" />
<asp:Label ID="lblGeneral" runat="server" Text="一般" Visible="False" meta:resourcekey="lblGeneralResource1"></asp:Label>
<asp:Label ID="lblOr" runat="server" Text="並簽" Visible="False" meta:resourcekey="lblOrResource1"></asp:Label>
<asp:Label ID="lblAnd" runat="server" Text="會簽" Visible="False" meta:resourcekey="lblAndResource1"></asp:Label>
<asp:Label ID="lblApplicant" runat="server" Text="申請者" Visible="False" meta:resourcekey="lblApplicantResource1"></asp:Label>
<asp:Label ID="lblReturnToApplicant" runat="server" Text="退回申請者" Visible="False" meta:resourcekey="lblReturnToApplicantResource1"></asp:Label>
<asp:Label ID="lblReturnMsg" runat="server" Text="返回" Visible="False" meta:resourcekey="lblReturnMsgResource1"></asp:Label>
<asp:Label ID="lblCheckReturn" runat="server" Text="確定退簽至此站點?" Visible="False" meta:resourcekey="lblCheckReturnResource1"></asp:Label>
<asp:Label ID="lblSignFail" runat="server" meta:resourcekey="lblSignFailResource1"
Text="簽核失敗,可能是重複簽核或表單已被取回" Visible="false"></asp:Label>
<Fast:Grid runat="server" ID="gvSiteList" runat="server" AllowSorting="True" AutoGenerateCheckBoxColumn="False"
AutoGenerateColumns="False" DataKeyOnClientWithCheckBox="False"
EnhancePager="True" PageSize="15">
<Columns>
<asp:BoundField DataField="SITE_ID" HeaderText="SITE_ID"
SortExpression="SITE_ID" />
<asp:BoundField DataField="SITE_CODE" HeaderText="SITE_CODE"
SortExpression="SITE_CODE" />
</Columns>
</Fast:Grid>
<table class="PopTable">
<tr>
<td style="text-align: center;" class="PopTableHeader" colspan="2">
<center>
<asp:Label ID="Label2" runat="server" Text="測試功能" meta:resourcekey="Label1Resource3"></asp:Label>
</center>
</td>
</tr>
<tr>
<td>下一站</td>
<td>
<asp:Button runat="server" ID="btnSendNext" Text="送到下一站" OnClientClick="return confirmSend();" OnClick="btnSendNext_OnClick" />
</td>
</tr>
<tr>
<td>退回站點代碼</td>
<td>
<asp:TextBox runat="server" ID="txtSiteCodeReturn"></asp:TextBox></td>
</tr>
<tr>
<td>退回申請者</td>
<td>
<asp:Button runat="server" ID="btnReturn" Text="退簽到特定戰點" OnClientClick="return confirmReturn();" OnClick="btnReturn_OnClick" />
</td>
</tr>
<tr>
<td>關閉視窗</td>
<td>
<asp:Button runat="server" ID="btnClose" Text="關閉簽核視窗" OnClick="btnClose_OnClick" />
</td>
</tr>
<tr>
<td>MSG</td>
<td>
<asp:TextBox runat="server" ID="txtErrorMsg" TextMode="MultiLine" Rows="3"></asp:TextBox>
</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>
UOF2_DEBUGGER_UC.ascx.cs 程式碼
using Ede.Uof.Common.ChoiceCenter;
using Ede.Uof.EIP.Organization.Util;
using Ede.Uof.Utility.Page.Common;
using Ede.Uof.WKF.Data;
using Ede.Uof.WKF.Design;
using Ede.Uof.WKF.Design.Data;
using Ede.Uof.WKF.Engine;
using Ede.Uof.WKF.Exceptions;
using Ede.Uof.WKF.Utility;
using Ede.Uof.WKF.VersionFields;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.Security.AntiXss;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml;
using Dapper;
using Ede.Uof.EIP.SystemInfo;
using Ede.Uof.Utility.Configuration;
public partial class WKF_OptionalFields_UOF2_DEBUGGER_UC : WKF_FormManagement_VersionFieldUserControl_VersionFieldUC
{
#region ==============公開方法及屬性==============
//表單設計時
//如果為False時,表示是在表單設計時
private bool m_ShowGetValueButton = true;
public bool ShowGetValueButton
{
get { return this.m_ShowGetValueButton; }
set { this.m_ShowGetValueButton = value; }
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (base.Request.QueryString["TASK_ID"] != null)
{
taskId = base.Request.QueryString["TASK_ID"];
//TaskId
lbTaskID.Text = TaskId;
}
if (base.Request.QueryString["SITE_ID"] != null)
{
this.siteId = base.Request.QueryString["SITE_ID"];
lbSiteID.Text = siteId;
}
else
{
lbSiteID.Text = "無資料";
}
if (base.Request.QueryString["NODE_SEQ"] != null)
{
int.TryParse(base.Request.QueryString["NODE_SEQ"], out this.nodeSeq);
lbNodeSeq.Text = nodeSeq.ToString();
}
isFreeTask = "false";
if (taskObj != null)
{
if (this.taskObj.FlowType == TaskFlowType.FreeFlow)
{
isFreeTask = "true";
}
lbIsFreeTask.Text = isFreeTask;
}
else
{
lbIsFreeTask.Text = "無資料";
}
lbApplicantGuid.Text = ApplicantGuid;
lbApplicantGroupId.Text = ApplicantGroupId;
if (taskObj != null)
{
lblSiteCode.Text = taskObj.CurrentSite.SiteCode;
}
if (!string.IsNullOrWhiteSpace(taskId) && !string.IsNullOrWhiteSpace(this.siteId))
{
this.m_Task = new Task(this.taskId);
Task task = new DefinedTask(this.taskId, this.siteId, this.nodeSeq);
}
try
{
if (!base.IsPostBack)
{
SideCodeList = GetSiteCodeList();
if (!string.IsNullOrWhiteSpace(taskId))
{
BindgrdReturnSiteList();
}
}
}
catch (Exception exception)
{
txtErrorMsg.Text = exception.Message + exception.StackTrace;
}
if (!IsPostBack)
{
BindGVSiteList();
}
//這裡不用修改
//欄位的初始化資料都到SetField Method去做
SetField(m_versionField);
}
/// <summary>
/// 外掛欄位的條件值
/// </summary>
public override string ConditionValue
{
get
{
//回傳字串
//此字串的內容將會被表單拿來當做條件判斷的值
return String.Empty;
}
}
/// <summary>
/// 是否被修改
/// </summary>
public override bool IsModified
{
get
{
//請自行判斷欄位內容是否有被修改
//有修改回傳True
//沒有修改回傳False
//若實作產品標準的控制修改權限必需實作
//一般是用 m_versionField.FieldValue (表單開啟前的值)
// 和this.FieldValue (當前的值) 作比對
return false;
}
}
/// <summary>
/// 查詢顯示的標題
/// </summary>
public override string DisplayTitle
{
get
{
//表單查詢或WebPart顯示的標題
//回傳字串
return String.Empty;
}
}
/// <summary>
/// 訊息通知的內容
/// </summary>
public override string Message
{
get
{
//表單訊息通知顯示的內容
//回傳字串
return String.Empty;
}
}
/// <summary>
/// 真實的值
/// </summary>
public override string RealValue
{
get
{
//回傳字串
//取得表單欄位簽核者的UsetSet字串
//內容必須符合EB UserSet的格式
return String.Empty;
}
set
{
//這個屬性不用修改
base.m_fieldValue = value;
}
}
/// <summary>
/// 欄位的內容
/// </summary>
public override string FieldValue
{
get
{
//回傳字串
//取得表單欄位填寫的內容
return String.Empty;
}
set
{
//這個屬性不用修改
base.m_fieldValue = value;
}
}
/// <summary>
/// 是否為第一次填寫
/// </summary>
public override bool IsFirstTimeWrite
{
get
{
//這裡請自行判斷是否為第一次填寫
//若實作產品標準的控制修改權限必需實作
//實作此屬性填寫者可修改也才會生效
//一般是用 m_versionField.Filler == null(沒有記錄填寫者代表沒填過)
// 和this.FieldValue (當前的值是否為預設的空白) 作比對
return false;
}
set
{
//這個屬性不用修改
base.IsFirstTimeWrite = value;
}
}
/// <summary>
/// 設定元件狀態
/// </summary>
/// <param name="Enabled">是否啟用輸入元件</param>
public void EnabledControl(bool Enabled)
{
}
/// <summary>
/// 顯示時欄位初始值
/// </summary>
/// <param name="versionField">欄位集合</param>
public override void SetField(Ede.Uof.WKF.Design.VersionField versionField)
{
FieldOptional fieldOptional = versionField as FieldOptional;
if (fieldOptional != null)
{
//若有擴充屬性,可以用該屬性存取
// fieldOptional.ExtensionSetting
//草稿
if(!fieldOptional.IsAudit)
{
if(fieldOptional.HasAuthority)
{
//有填寫權限的處理
EnabledControl(true);
}
else
{
//沒填寫權限的處理
EnabledControl(false);
}
}
else
{
//己送出
//有填過
if(fieldOptional.Filler != null)
{
//判斷填寫的站點和當前是否相同
if(base.taskObj != null && base.taskObj.CurrentSite != null &&
base.taskObj.CurrentSite.SiteId == fieldOptional.FillSiteId && fieldOptional.Filler.UserGUID == Ede.Uof.EIP.SystemInfo.Current.UserGUID)
{
//判斷填寫權限
if (fieldOptional.HasAuthority)
{
//有填寫權限的處理
EnabledControl(true);
}
else
{
//沒填寫權限的處理
EnabledControl(false);
}
}
else
{
//判斷修改權限
if (fieldOptional.AllowModify)
{
//有修改權限的處理
EnabledControl(true);
}
else
{
//沒修改權限的處理
EnabledControl(false);
}
}
}
else
{
//判斷填寫權限
if (fieldOptional.HasAuthority)
{
//有填寫權限的處理
EnabledControl(true);
}
else
{
//沒填寫權限的處理
EnabledControl(false);
}
}
}
switch(fieldOptional.FieldMode)
{
case FieldMode.Print:
case FieldMode.View:
//觀看和列印都需作沒有權限的處理
EnabledControl(false);
break;
}
#region ==============屬性說明==============『』
//fieldOptional.IsRequiredField『是否為必填欄位,如果是必填(True),如果不是必填(False)』
//fieldOptional.DisplayOnly『是否為純顯示,如果是(True),如果不是(False),一般在觀看表單及列印表單時,屬性為True』
//fieldOptional.HasAuthority『是否有填寫權限,如果有填寫權限(True),如果沒有填寫權限(False)』
//fieldOptional.FieldValue『如果已有人填寫過欄位,則此屬性為記錄其內容』
//fieldOptional.FieldDefault『如果欄位有預設值,則此屬性為記錄其內容』
//fieldOptional.FieldModify『是否允許修改,如果允許(fieldOptional.FieldModify=FieldModifyType.yes),如果不允許(fieldOptional.FieldModify=FieldModifyType.no)』
//fieldOptional.Modifier『如果欄位有被修改過,則Modifier的內容為EBUser,如果沒有被修改過,則會等於Null』
#endregion
#region ==============如果有修改,要顯示修改者資訊==============
if (fieldOptional.Modifier != null)
{
lblModifier.Visible = true;
lblModifier.ForeColor = System.Drawing.Color.FromArgb(0x52, 0x52, 0x52);
lblModifier.Text = System.Web.Security.AntiXss.AntiXssEncoder.HtmlEncode(fieldOptional.Modifier.Name, true);
}
#endregion
}
}
private ReturnSignUCO returnUCO = new ReturnSignUCO();
private ReturnAbleSiteDataSet returnDs = new ReturnAbleSiteDataSet();
private string taskId;
private string siteId;
private int nodeSeq;
private UserUCO userUco = new UserUCO();
private Task m_Task;
private string source;
protected Label lblAllowRA;
private string isFreeTask;
private string formVersionId;
private List<dynamic> SideCodeList;
private void BindgrdReturnSiteList()
{
this.returnDs = this.returnUCO.GetSitesForReturnSign(this.taskId);
this.grdReturnSiteList.DataSource = this.returnDs.TB_WKF_TASK_SITE;
this.grdReturnSiteList.DataBind();
UserSet returnSigner = new UserSet();
int rowCount = this.returnDs.TB_WKF_TASK_SITE.Rows.Count;
DataRow lastRow = this.returnDs.TB_WKF_TASK_SITE.Rows[rowCount - 1];
this.hfLastSiteId.Value = lastRow["SITE_ID"].ToString();
switch ((SignType)Enum.Parse(typeof(SignType), lastRow["SIGN_TYPE"].ToString()))
{
case SignType.General:
this.lblSignTypeValue.Text = this.lblGeneral.Text;
this.hfLastSignType.Value = "Return";
break;
case SignType.Or:
this.lblSignTypeValue.Text = this.lblOr.Text;
this.hfLastSignType.Value = "Return";
break;
case SignType.And:
this.lblSignTypeValue.Text = this.lblAnd.Text;
this.hfLastSignType.Value = "Return";
break;
//退回申請者
case SignType.Apply:
{
this.hfLastSignType.Value = "ReturnToApplicant";
this.lblSignTypeValue.Text = this.lblApplicant.Text;
Task task = new Task(this.taskId);
EBUser applyEbUser = this.userUco.GetEBUser(task.Applicant.UserGUID);
UserSetUser usu = new UserSetUser();
usu.USER_GUID = applyEbUser.UserGUID;
returnSigner.Items.Add(usu);
break;
}
}
bool IsOriginalAccountExcept = true;
ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow[] NodeRows = (ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow[])this.returnDs.TB_WKF_TASK_NODE.Select("SITE_ID='" + this.hfLastSiteId.Value + "'");
foreach (ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow drNode in NodeRows)
{
EBUser ebuser = this.userUco.GetEBUser(drNode["ORIGINAL_SIGNER"].ToString());
if (ebuser.IsActive())
{
IsOriginalAccountExcept = false;
UserSetUser usu2 = new UserSetUser();
usu2.USER_GUID = ebuser.UserGUID;
returnSigner.Items.Add(usu2);
}
}
if (NodeRows.Length == 0)
{
IsOriginalAccountExcept = false;
}
if (IsOriginalAccountExcept)
{
this.lblSignerExcept.Visible = true;
//((Master_DialogMasterPage)base.Master).Button1Text = "";
return;
}
this.UC_ChoiceList.UserSet = returnSigner;
this.UC_ChoiceList.treeList_Bind();
}
// Token: 0x06003C7B RID: 15483 RVA: 0x00399224 File Offset: 0x00397424
protected void grdReturnSiteList_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView rowView = (DataRowView)e.Row.DataItem;
((Label)e.Row.FindControl("lblSite")).Text = Convert.ToString(e.Row.RowIndex + 1);
SignType signType = (SignType)Enum.Parse(typeof(SignType), rowView["SIGN_TYPE"].ToString());
Label lblSignType = (Label)e.Row.FindControl("lblSignType");
ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow[] NodeRows = (ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow[])this.returnDs.TB_WKF_TASK_NODE.Select("SITE_ID='" + rowView["SITE_ID"].ToString() + "'");
string originalSigner = "";
string actualSigner = "";
bool IsOriginalAccountExcept = true;
foreach (ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow drNode in NodeRows)
{
EBUser ebuser = this.userUco.GetEBUser(drNode["ORIGINAL_SIGNER"].ToString());
if (ebuser.IsActive())
{
IsOriginalAccountExcept = false;
}
originalSigner = originalSigner + ebuser.DisplayNameWithLink + ",";
if (drNode["ACTUAL_SIGNER"] != DBNull.Value)
{
EBUser ebuser2 = this.userUco.GetEBUser(drNode["ACTUAL_SIGNER"].ToString());
actualSigner = actualSigner + ebuser2.DisplayNameWithLink + ",";
}
}
if (NodeRows.Length == 0)
{
IsOriginalAccountExcept = false;
}
if (originalSigner.Length > 0)
{
originalSigner = originalSigner.Substring(0, originalSigner.Length - 1);
}
if (actualSigner.Length > 0)
{
actualSigner = actualSigner.Substring(0, actualSigner.Length - 1);
}
Label lblOriginalSigner = (Label)e.Row.FindControl("lblOriginalSigner");
lblOriginalSigner.Text = originalSigner;
Label lblActuralSigner = (Label)e.Row.FindControl("lblActuralSigner");
lblActuralSigner.Text = actualSigner;
string siteRemark = string.Empty;
Label lblSiteRemark = (Label)e.Row.FindControl("lblSiteRemark");
Label lblSiteId = (Label)e.Row.FindControl("lblSiteId");
string strHeaderText = ((DataControlFieldCell)lblSiteRemark.Parent).ContainingField.HeaderText;
int templateFieldIndex = -1;
foreach (object obj in this.grdReturnSiteList.Columns)
{
DataControlField col = (DataControlField)obj;
if (col.HeaderText.Trim() == strHeaderText)
{
templateFieldIndex = this.grdReturnSiteList.Columns.IndexOf(col);
}
}
if (this.m_Task.CurrentDocument.AllowDisplaySiteRemark)
{
siteRemark = new SetupFlowUCO().GetSiteRemark(this.taskId, this.m_Task.FormVersionId, rowView["SITE_ID"].ToString()).Trim().Replace(Environment.NewLine, "<br>");
if (!string.IsNullOrEmpty(siteRemark))
{
string[] array2 = siteRemark.Split(new string[]
{
"<br>"
}, StringSplitOptions.None);
string tmpString = "";
foreach (string line in array2)
{
tmpString = tmpString + AntiXssEncoder.HtmlEncode(line, true) + "<br>";
}
siteRemark = tmpString.Replace(" ", " ");
lblSiteRemark.Text = siteRemark;
}
if (templateFieldIndex != -1)
{
this.grdReturnSiteList.Columns[templateFieldIndex].Visible = true;
}
}
else if (templateFieldIndex != -1)
{
this.grdReturnSiteList.Columns[templateFieldIndex].Visible = false;
}
Button btnReturn = (Button)e.Row.FindControl("btnReturn");
Label lblOrgExcept = (Label)e.Row.FindControl("lblOrginialSignerExcept");
if (IsOriginalAccountExcept)
{
btnReturn.Enabled = false;
lblOrgExcept.Visible = true;
}
else
{
btnReturn.Attributes.Add("onclick", "if(confirm('" + this.lblCheckReturn.Text + "')==false){return false;}");
lblOrgExcept.Visible = false;
}
btnReturn.CommandArgument = rowView["SITE_ID"].ToString();
lblSiteId.Text = rowView["SITE_ID"].ToString();
Label lblSITE_CODE = (Label)e.Row.FindControl("lblSITE_CODE");
if (SideCodeList != null && SideCodeList.Any())
{
lblSITE_CODE.Text = SideCodeList.Where(n => n.SITE_ID == rowView["SITE_ID"].ToString()).FirstOrDefault().SITE_CODE ?? "無資料";
}
switch (signType)
{
case SignType.General:
lblSignType.Text = this.lblGeneral.Text;
return;
case SignType.Or:
lblSignType.Text = this.lblOr.Text;
return;
case SignType.And:
lblSignType.Text = this.lblAnd.Text;
return;
case SignType.Apply:
{
lblSignType.Text = this.lblApplicant.Text;
btnReturn.CommandName = "ReturnToApplicant";
btnReturn.ForeColor = Color.Red;
btnReturn.Text = this.lblReturnToApplicant.Text;
EBUser applyEbUser = this.userUco.GetEBUser(this.m_Task.Applicant.UserGUID);
lblOriginalSigner.Text = applyEbUser.DisplayNameWithLink;
lblActuralSigner.Text = applyEbUser.DisplayNameWithLink;
if (!applyEbUser.IsActive())
{
btnReturn.Enabled = false;
lblOrgExcept.Visible = true;
}
if (this.m_Task.CurrentDocument.AllowReturnApplicant)
{
//this.lblAllowRA.Visible = false;
//btnReturn.Enabled = true;
return;
}
//btnReturn.ForeColor = Color.Gray;
//this.lblAllowRA.Visible = true;
//btnReturn.Enabled = false;
break;
}
default:
return;
}
}
}
/// <summary>
/// 按下退簽要做的事情
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void grdReturnSiteList_RowCommand(object sender, GridViewCommandEventArgs e)
{
DefinedTask task = new DefinedTask(this.taskId, this.siteId, this.nodeSeq);
if (task.CheckSigned(this.taskId, this.siteId, this.nodeSeq) && !task.CurrentSite.IsParallalSite)
{
Dialog.SetReturnValue2("DoubleSigned");
Dialog.Close(this.Page);
return;
}
this.source = Source.PC.ToString();
if (e.CommandName == "Return")
{
try
{
//this.returnUCO.ReturnSign(this.taskId, this.siteId, this.nodeSeq, e.CommandArgument.ToString(), base.User.Identity.Name, Convert.ToBoolean(this.isFreeTask), this.source);
//goto IL_19E;
}
catch (SignFailException ex)
{
//Logger.WriteError(ex.Message + "\r\n" + ex.StackTrace);
//Dialog.SetReturnValue2("NeedPostBack");
//Dialog.Close(this.Page, this.lblSignFail.Text);
}
catch (Exception ex2)
{
//Logger.WriteError(ex2.Message + "\r\n" + ex2.StackTrace);
//Dialog.SetReturnValue2("NeedPostBack");
//Dialog.Close(this.Page, this.lblSignFail.Text);
//goto IL_19E;
}
}
if (e.CommandName == "ReturnToApplicant")
{
//this.returnUCO.ReturnToApplicant(this.taskId, this.siteId, this.nodeSeq, base.User.Identity.Name, Convert.ToBoolean(this.isFreeTask), this.source);
}
Dialog.SetReturnValue2("NeedPostBack");
Dialog.Close(this.Page);
}
/// <summary>
/// 關閉視窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnClose_OnClick(object sender, EventArgs e)
{
Dialog.SetReturnValue2("NeedPostBack");
Dialog.Close(Page);
}
/// <summary>
/// 送到下一站
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSendNext_OnClick(object sender, EventArgs e)
{
TaskUtilityUCO taskUtilityUco = new TaskUtilityUCO();
taskUtilityUco.SendNextSite(taskId, siteId, nodeSeq, Current.UserGUID);
//關閉+更新
Dialog.SetReturnValue2("NeedPostBack");
Dialog.Close(Page);
}
/// <summary>
/// 列出全部站點代碼SITE_CODE
/// </summary>
/// <returns></returns>
private List<dynamic> GetSiteCodeList()
{
string sql = @"
SELECT TOP (100)
a.[SITE_ID],
b.SITE_CODE as 'SITE_CODE'
FROM TB_WKF_TASK_SITE a
left join [TB_WKF_FVR_SITE_CODE] b on a.SOURCE_SITE_ID = b.SITE_ID
WHERE TASK_ID = @TaskId";
var connString = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
using (var conn = new System.Data.SqlClient.SqlConnection(connString))
{
return conn.Query(sql, new { taskId }).AsList();
}
}
/// <summary>
/// 取得特定站點代碼SITE_CODE
/// </summary>
/// <param name="code">站點代碼</param>
/// <returns></returns>
private string GetSiteCodeList(string code)
{
string sql = @"
SELECT TOP (1)
a.[SITE_ID],
FROM TB_WKF_TASK_SITE a
left join [TB_WKF_FVR_SITE_CODE] b on a.SOURCE_SITE_ID = b.SITE_ID
WHERE TASK_ID = @TaskId and b.SITE_CODE like @code";
var connString = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
using (var conn = new System.Data.SqlClient.SqlConnection(connString))
{
return conn.ExecuteScalar<string>(sql, new { taskId, code });
}
}
private void BindGVSiteList()
{
gvSiteList.DataSource = GetSiteCodeList();
gvSiteList.DataBind();
}
/// <summary>
/// 不同意按鈕-退簽
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnReturn_OnClick(object sender, EventArgs e)
{
//退簽到特定站點代碼
var siteCode = txtSiteCodeReturn.Text.Trim();
if (string.IsNullOrWhiteSpace(siteCode))
{
txtErrorMsg.Text = "請輸入站點代碼";
return;
}
var siteCodeGuid = GetSiteCodeList(siteCode);
if(string.IsNullOrWhiteSpace(siteCodeGuid))
{
txtErrorMsg.Text = "查無此站點GUID";
return;
}
if (siteCodeGuid != null)
{
if (base.Request.QueryString["NODE_SEQ"] != null)
{
int.TryParse(base.Request.QueryString["NODE_SEQ"], out this.nodeSeq);
lbNodeSeq.Text = nodeSeq.ToString();
}
if (MobileUI)
{
source = Source.Mobile.ToString();
}
else
{
source = Source.PC.ToString();
}
var rUCO = new ReturnSignUCO();
rUCO.ReturnSign(taskId, this.siteId, this.nodeSeq, siteCode, Current.UserGUID, Convert.ToBoolean(this.isFreeTask), this.source);
Dialog.SetReturnValue2("NeedPostBack");
Dialog.Close(Page);
}
}
}
0 Comments