chore: 首次簽入 Thinkyu ASP.NET 專案

- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
2026-09-10 09:42:37 +08:00
commit 577060bc78
2496 changed files with 501389 additions and 0 deletions
@@ -0,0 +1,505 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebLib;
namespace Education.Forms.
{
[DataBindingHandler("System.Web.UI.Design.TextDataBindingHandler, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
[DefaultBindingProperty("表單ID")]
public partial class : System.Web.UI.UserControl
{
private FormBase parent;
private DAC_表單簽核主檔 Dao表單簽核;
private DAC_表單簽核明細 Dao表單簽核明細;
private DAC_組織人員 Dao組織人員;
private DAC_組織圖 Dao組織圖;
private DAC_職務 Dao職務;
protected void Page_Init(object sender, EventArgs e)
{
parent = (Page as FormBase);
Dao表單簽核 = new DAC_表單簽核主檔(parent.conn);
Dao表單簽核明細 = new DAC_表單簽核明細(parent.conn);
Dao組織人員 = new DAC_組織人員(parent.conn);
Dao組織圖 = new DAC_組織圖(parent.conn);
Dao職務 = new DAC_職務(parent.conn);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!parent.IsPostBack)
Refresh();
}
/* ===== 舊 Refresh 保留 =====
public void Refresh()
{
NameValueList 簽核人員List = new NameValueList();
NameValueList 抽單簽核人員List = new NameValueList();
組織人員List 組織List = null;
// 取得表單簽核狀態
表單簽核主檔 status = Dao表單簽核.GetLastStatus(表單類別, 表單ID);
if (status != null)
組織List = Dao組織人員.Select人員所屬的組織(status.送簽人員);
else
組織List = Dao組織人員.Select人員所屬的組織(parent.UserId);
string 目前關卡 = "0";
if (status != null)
{
表單簽核明細 detail = Dao表單簽核明細.GetLast(status.簽核ID);
目前關卡 = detail.關ID;
// 若抽單且已簽核,視同未送簽
if (status.應簽關數 == "D" && status.已簽關數 == "D")
目前關卡 = "0";
// 若不核准,視同未送簽
if (status.最終結果 == "N")
目前關卡 = "0";
}
if (目前關卡 == "0" && status == null)
lbStatus.Text = "尚未送簽";
if (目前關卡 == "0" && status != null && status.最終結果 == "N")
lbStatus.Text = "先前送簽不核准";
if (目前關卡 == "0" && status != null && status.應簽關數 == "D" && status.已簽關數 == "D")
lbStatus.Text = "先前已抽單";
if (目前關卡 == "1" && status.已簽關數 == "0")
lbStatus.Text = "已送簽,等待第一關簽核";
if (目前關卡 == "2" && status.已簽關數 == "1")
lbStatus.Text = "第一關已簽核,等待第二關簽核";
if (目前關卡 == "3" && status.已簽關數 == "2")
lbStatus.Text = "第二關已簽核,等待第三關簽核";
if (目前關卡 == "1" && status.已簽關數 == "1" && status.應簽關數 == "1")
lbStatus.Text = "已簽核完畢";
if (目前關卡 == "2" && status.已簽關數 == "2" && status.應簽關數 == "2")
lbStatus.Text = "已簽核完畢";
if (目前關卡 == "3" && status.已簽關數 == "3" && status.應簽關數 == "3")
lbStatus.Text = "已簽核完畢";
if (目前關卡 == "D")
lbStatus.Text = "已抽單,等待簽核";
// 改 UI 的可視與否
btnApprove.Visible = Dao表單簽核.可簽核(表單類別, 表單ID, parent.UserId);
btnCancel.Visible = Dao表單簽核.可取消(表單類別, 表單ID, parent.UserId);
btnSend.Visible = 可送簽 && Dao表單簽核.可送簽(表單類別, 表單ID);
btnWithDraw.Visible = 可送簽 && Dao表單簽核.可撤簽(表單類別, 表單ID, parent.UserId);
pnlApprove.Visible = btnApprove.Visible;
// pnlNext.Visible = (btnSend.Visible || btnApprove.Visible) && (目前關卡 == "0" || 目前關卡 == "1" || 目前關卡 == "2");
pnlNext.Visible = (btnSend.Visible || btnApprove.Visible) && (目前關卡 == "0" || 目前關卡 == "1");
pnlWithdraw.Visible = btnWithDraw.Visible;
if (pnlApprove.Visible || pnlNext.Visible || pnlWithdraw.Visible)
this.Attributes.CssStyle["display"] = "block";
else
this.Attributes.CssStyle["display"] = "none";
if (pnlNext.Visible)
{
switch (目前關卡)
{
case "0": // 第一關是主管 2022-03-15 修改
// Get部門簽核人員(PublicVariable.人資部ID, 簽核人員List);
if (status != null)
{
Get直接主管(status.送簽人員, 簽核人員List, 組織List);
}
else
{
Get直接主管(parent.UserId, 簽核人員List, 組織List);
}
break;
case "1": // 下一關是總管理處 2022-03-15 修改
// 取出這個人員的直接主管,以及所屬組織的主管
// Get直接主管(status.送簽人員, 簽核人員List, 組織List);
Get部門簽核人員(PublicVariable.總管理處ID, 簽核人員List);
break;
case "2": // 下一關沒有了 2022-03-15 修改
// Get部門簽核人員(PublicVariable.總管理處ID, 簽核人員List);
//DataTable 人員dt = Dao組織人員.Select組織人員(PublicVariable.總管理處ID);
break;
case "3": // 總管理處
break;
case "D": // 抽單
break;
}
ddlApprover.DataSource = 簽核人員List;
ddlApprover.DataTextField = "Name";
ddlApprover.DataValueField = "Value";
ddlApprover.DataBind();
}
if (status != null)
{
if (pnlWithdraw.Visible)
{
Get直接主管(status.送簽人員, 抽單簽核人員List, 組織List);
ddlWithdrawApprover.DataSource = 抽單簽核人員List;
ddlWithdrawApprover.DataTextField = "Name";
ddlWithdrawApprover.DataValueField = "Value";
ddlWithdrawApprover.DataBind();
}
ds簽核歷程.SelectParameters["簽核ID"].DefaultValue = status.簽核ID.ToString();
gv簽核歷程.DataBind();
gv簽核歷程.Visible = true;
}
else
{
gv簽核歷程.Visible = false;
}
}
===== 舊 Refresh 結束 ===== */
/// <summary>
/// 新 Refresh:固定簽核人員清單,不從資料庫動態查詢
/// </summary>
public void Refresh()
{
status = Dao表單簽核.GetLastStatus(, ID);
string = "0";
if (status != null)
{
detail = Dao表單簽核明細.GetLast(status.ID);
= detail.ID;
if (status. == "D" && status. == "D")
= "0";
if (status. == "N")
= "0";
}
if ( == "0" && status == null)
lbStatus.Text = "尚未送簽";
if ( == "0" && status != null && status. == "N")
lbStatus.Text = "先前送簽不核准";
if ( == "0" && status != null && status. == "D" && status. == "D")
lbStatus.Text = "先前已抽單";
if ( == "1" && status. == "0")
lbStatus.Text = "已送簽,等待第一關簽核";
if ( == "2" && status. == "1")
lbStatus.Text = "第一關已簽核,等待第二關簽核";
if ( == "3" && status. == "2")
lbStatus.Text = "第二關已簽核,等待第三關簽核";
if ( == "1" && status. == "1" && status. == "1")
lbStatus.Text = "已簽核完畢";
if ( == "2" && status. == "2" && status. == "2")
lbStatus.Text = "已簽核完畢";
if ( == "3" && status. == "3" && status. == "3")
lbStatus.Text = "已簽核完畢";
if ( == "D")
lbStatus.Text = "已抽單,等待簽核";
btnApprove.Visible = Dao表單簽核.(, ID, parent.UserId);
btnCancel.Visible = Dao表單簽核.(, ID, parent.UserId);
btnSend.Visible = && Dao表單簽核.(, ID);
btnWithDraw.Visible = && Dao表單簽核.(, ID, parent.UserId);
pnlApprove.Visible = btnApprove.Visible;
pnlNext.Visible = (btnSend.Visible || btnApprove.Visible) && ( == "0" || == "1");
pnlWithdraw.Visible = btnWithDraw.Visible;
if (pnlApprove.Visible || pnlNext.Visible || pnlWithdraw.Visible)
this.Attributes.CssStyle["display"] = "block";
else
this.Attributes.CssStyle["display"] = "none";
if (pnlNext.Visible)
{
NameValueList List = new NameValueList();
switch ()
{
case "0":
Label1.Text = "第一關簽核人員:";
List.Add(new NameValueItem("陳琬婷", "02070"));
break;
case "1":
Label1.Text = "第二關簽核人員:";
List.Add(new NameValueItem("黃佳萍", "00002"));
List.Add(new NameValueItem("吳惠如", "00003"));
break;
}
ddlApprover.DataSource = List;
ddlApprover.DataTextField = "Name";
ddlApprover.DataValueField = "Value";
ddlApprover.DataBind();
}
if (status != null)
{
if (pnlWithdraw.Visible)
{
NameValueList List = new NameValueList();
List.Add(new NameValueItem("陳琬婷", "02070"));
ddlWithdrawApprover.DataSource = List;
ddlWithdrawApprover.DataTextField = "Name";
ddlWithdrawApprover.DataValueField = "Value";
ddlWithdrawApprover.DataBind();
}
ds簽核歷程.SelectParameters["簽核ID"].DefaultValue = status.ID.ToString();
gv簽核歷程.DataBind();
gv簽核歷程.Visible = true;
}
else
{
gv簽核歷程.Visible = false;
}
}
/// <summary>
/// 從部門取得人員,不包括本人
/// </summary>
/// <param name="部門ID"></param>
/// <param name="簽核人員List"></param>
private void Get部門簽核人員(int ID, NameValueList List)
{
List.Clear();
DataTable dt = Dao組織人員.Select組織人員(ID);
foreach (DataRow r in dt.Rows)
{
string ID = DAC.GetString(r["人員ID"]);
string = DAC.GetString(r["人員姓名"]);
//if (人員ID.Length > 0 && 人員ID.CompareTo(parent.UserId) != 0 &&
// !簽核人員List.ValueExists(人員ID))
if (ID.Length > 0 && !List.ValueExists(ID))
{
List.Add(, ID);
}
}
}
/// <summary>
/// 取得本人的直屬主管、部門主管以及以上各部門主管
/// </summary>
/// <param name="部門ID"></param>
/// <param name="簽核人員List"></param>
private void Get直接主管(string , NameValueList List, List List)
{
foreach ( item in List)
{
// 直接主管
if (item.ID.Length > 0 &&
item.ID.CompareTo() != 0 &&
!List.ValueExists(item.ID))
{
List.Add(String.Format("{0} {1}", item.ID, parent.Get員工姓名(item.ID)), item.ID);
}
// 所屬組織主管
List data = Dao組織圖.SelectOne(item.ID);
if (data.Count > 0)
{
string ID = data[0].;
if (ID.Length > 0 &&
ID.CompareTo() != 0 &&
!List.ValueExists(ID))
{
List.Add(String.Format("{0} {1}", ID, parent.Get員工姓名(ID)), ID);
}
}
}
}
public string
{
get { return DAC.GetString(ViewState["表單類別"]); }
set { ViewState["表單類別"] = value; }
}
[Bindable(true)]
public string ID
{
get { return DAC.GetString(ViewState["表單ID"]); }
set { ViewState["表單ID"] = value; }
}
[Bindable(true)]
public string ID格式
{
get { return DAC.GetString(ViewState["表單ID格式"]); }
set { ViewState["表單ID格式"] = value; }
}
[Bindable(true)]
public bool
{
get { return DAC.GetBoolean(ViewState["可送簽"]); }
set { ViewState["可送簽"] = value; }
}
[Bindable(true)]
public int
{
get { return DAC.GetInt32(ViewState["訓練課程企劃編號"]); }
set { ViewState["訓練課程企劃編號"] = value; }
}
[Bindable(true)]
public int 2
{
get { return DAC.GetInt32(ViewState["編號2"]); }
set { ViewState["編號2"] = value; }
}
public string
{
get { return lbHint.Text; }
set { lbHint.Text = value; }
}
public event EventHandler Approved;
public event EventHandler Rejected;
public event EventHandler Canceled;
protected void btnApprove_Click(object sender, EventArgs e)
{
status = Dao表單簽核.GetLastStatus(, ID);
if (status == null)
return;
// 一般的簽核
if (status..CompareTo("D") != 0)
{
// 核准
if (rblApprove.SelectedValue == "Y")
{
bool = Dao表單簽核.(status.ID, parent.UserId, txtApproveText.Text, ddlApprover.SelectedValue);
if ()
{
// 發送送簽郵件
string = parent.Dao員工.Get電子郵件(ddlApprover.SelectedValue);
string = parent.Dao員工.Get員工姓名(ddlApprover.SelectedValue);
= new ();
.Context = Context;
.(status.ID, , );
}
if (Approved != null)
Approved(sender, e);
}
// 不核准
if (rblApprove.SelectedValue == "N")
{
Dao表單簽核.(status.ID, parent.UserId, txtApproveText.Text);
if (Rejected != null)
Rejected(sender, e);
}
}
// 撤簽的簽核
else
{
// 核准
if (rblApprove.SelectedValue == "Y")
{
Dao表單簽核.(status.ID, parent.UserId, txtApproveText.Text);
if (Approved != null)
Approved(sender, e);
}
// 不核准
if (rblApprove.SelectedValue == "N")
{
Dao表單簽核.(status.ID, parent.UserId, txtApproveText.Text);
if (Rejected != null)
Rejected(sender, e);
}
}
Refresh();
}
protected void btnCancel_Click(object sender, EventArgs e)
{
status = Dao表單簽核.GetLastStatus(, ID);
if (status == null)
return;
Dao表單簽核.(status.ID);
if (Canceled != null)
Canceled(sender, e);
Refresh();
}
public event SendEventHandler Send;
public event SendingEventHandler Sending;
protected void btnSend_Click(object sender, EventArgs e)
{
if (Sending != null)
{
SendingEventArgs e1 = new SendingEventArgs() { = true };
Sending(sender, e1);
if (!e1.)
return;
}
// 送簽
int ID = Dao表單簽核.(, ID, parent.UserId, ddlApprover.SelectedValue, ID格式,
, 2);
// 發送送簽郵件
string = parent.Dao員工.Get電子郵件(ddlApprover.SelectedValue);
string = parent.Dao員工.Get員工姓名(ddlApprover.SelectedValue);
= new ();
.Context = Context;
.(ID, , );
if (Send != null)
Send(sender, new SendEventArgs() { ID = ID });
Refresh();
}
protected void btnWithDraw_Click(object sender, EventArgs e)
{
// 抽單
status = Dao表單簽核.GetLastStatus(, ID);
if (status == null)
return;
// 發送撤簽郵件
string = parent.Dao員工.Get電子郵件(ddlWithdrawApprover.SelectedValue);
string = parent.Dao員工.Get員工姓名(ddlWithdrawApprover.SelectedValue);
= new ();
.Context = Context;
.(status.ID, , );
Dao表單簽核.(status.ID, ddlWithdrawApprover.SelectedValue);
Refresh();
}
protected string Get員工姓名(string )
{
return parent.Get員工姓名();
}
protected void ds簽核歷程_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
e.ObjectInstance = Dao表單簽核明細;
}
}
}