chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,370 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebLib;
|
||||
|
||||
namespace Education.Forms.辦訓狀況
|
||||
{
|
||||
public partial class 教學日誌處理 : FormBase
|
||||
{
|
||||
private DAC_訓練課程內容 Dao訓練課程內容;
|
||||
private DAC_教學日誌 Dao教學日誌;
|
||||
private int 課程企劃ID;
|
||||
private int 課程序號;
|
||||
private bool 主簽核已核准 = false;
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
FunctionName = "教學日誌暨異常狀況登錄";
|
||||
Dao訓練課程內容 = new DAC_訓練課程內容(conn);
|
||||
Dao教學日誌 = new DAC_教學日誌(conn);
|
||||
Form_View = FormView1;
|
||||
FormView_DataSource = ds教學日誌;
|
||||
|
||||
if (IsPostBack)
|
||||
{
|
||||
Form_View.DataBind();
|
||||
}
|
||||
|
||||
Form_View.Visible = (訓練企劃搜尋.訓練企劃編號 > 0
|
||||
&& ddl課程內容.SelectedValue != null && ddl課程內容.SelectedValue.Length > 0);
|
||||
|
||||
送簽1.Send += 送簽_Changed;
|
||||
送簽1.Approved += 送簽_Changed;
|
||||
送簽1.Rejected += 送簽_Changed;
|
||||
送簽1.Canceled += 送簽_Changed;
|
||||
送簽1.Withdrawn += 送簽_Changed;
|
||||
送簽2.Send += 送簽_Changed;
|
||||
送簽2.Approved += 送簽_Changed;
|
||||
送簽2.Rejected += 送簽_Changed;
|
||||
送簽2.Canceled += 送簽_Changed;
|
||||
送簽2.Withdrawn += 送簽_Changed;
|
||||
|
||||
if (!Form_View.Visible || Form_View.CurrentMode != FormViewMode.ReadOnly)
|
||||
{
|
||||
送簽1.Visible = false;
|
||||
送簽2.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void 送簽_Changed(object sender, EventArgs e)
|
||||
{
|
||||
Form_View.DataBind();
|
||||
}
|
||||
|
||||
protected void ds已上課_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
|
||||
{
|
||||
e.ObjectInstance = Dao訓練課程企劃;
|
||||
}
|
||||
|
||||
protected void ds課程內容_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
|
||||
{
|
||||
e.ObjectInstance = Dao訓練課程內容;
|
||||
}
|
||||
|
||||
protected void btn查詢1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (訓練企劃搜尋.訓練企劃編號 == 0)
|
||||
{
|
||||
Panel1.Visible = false;
|
||||
Panel2.Visible = false;
|
||||
lbMessage.Text = "請選擇課程企劃";
|
||||
return;
|
||||
}
|
||||
|
||||
Panel1.Visible = true;
|
||||
ddl課程內容.DataBind();
|
||||
Panel2.Visible = ddl課程內容.Items.Count > 0;
|
||||
}
|
||||
|
||||
protected void btn查詢2_Click(object sender, EventArgs e)
|
||||
{
|
||||
Form_View.ChangeMode(FormViewMode.ReadOnly);
|
||||
Form_View.DataBind();
|
||||
}
|
||||
|
||||
protected override void FormView_DataBound(object sender, EventArgs e)
|
||||
{
|
||||
if (!Form_View.Visible)
|
||||
return;
|
||||
|
||||
//if (Form_View.PageCount == 0)
|
||||
//{
|
||||
// if (Form_View.CurrentMode != FormViewMode.Insert)
|
||||
// {
|
||||
// Form_View.ChangeMode(FormViewMode.Insert);
|
||||
// Form_View.DataBind();
|
||||
// return;
|
||||
// }
|
||||
//}
|
||||
|
||||
課程企劃ID = 訓練企劃搜尋.訓練企劃編號;
|
||||
課程序號 = DAC.GetInt32(ddl課程內容.SelectedValue);
|
||||
|
||||
base.FormView_DataBound(sender, e);
|
||||
|
||||
// DataBound 事件在 ReadOnly/Edit/Insert DataBound 之後觸發,
|
||||
// 在此做最後一次送簽區塊可見性確認,避免切換課程時停留在舊狀態。
|
||||
if (Form_View.CurrentMode == FormViewMode.ReadOnly && Form_View.SelectedValue != null)
|
||||
{
|
||||
送簽1.Visible = true;
|
||||
送簽2.Visible = 已送簽且未撤單(Dao表單簽核主檔.GetLastStatus(
|
||||
"教學日誌暨異常狀況", String.Format("{0}|{1}", 課程企劃ID, 課程序號)));
|
||||
}
|
||||
else
|
||||
{
|
||||
送簽1.Visible = false;
|
||||
送簽2.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void 顯示課程內容相關資料()
|
||||
{
|
||||
訓練課程內容List d = Dao訓練課程內容.SelectOne(課程企劃ID, 課程序號);
|
||||
if (d.Count > 0)
|
||||
{
|
||||
if (FindControl<ITextControl>(Form_View, "lb節次") != null)
|
||||
FindControl<ITextControl>(Form_View, "lb節次").Text = d[0].節次.ToString();
|
||||
if (FindControl<ITextControl>(Form_View, "lb講師") != null)
|
||||
FindControl<ITextControl>(Form_View, "lb講師").Text = Dao訓練課程企劃.Select選定講師名稱(課程企劃ID, 課程序號);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void FormView_InsertDataBound(object sender, EventArgs e)
|
||||
{
|
||||
base.FormView_InsertDataBound(sender, e);
|
||||
|
||||
訓練課程企劃List d = Dao訓練課程企劃.SelectOne(課程企劃ID);
|
||||
if (d.Count == 0)
|
||||
return;
|
||||
|
||||
FindControl<ITextControl>(Form_View, "lb課程企劃編號").Text = d[0].顯示編號;
|
||||
FindControl<HiddenField>(Form_View, "hf課程序號").Value = ddl課程內容.SelectedValue;
|
||||
FindControl<DateTextBox>(Form_View, "txt填表日期").Value = DateTime.UtcNow.AddHours(8).Date;
|
||||
FindControl<ITextControl>(Form_View, "txt填表人員").Text = UserId;
|
||||
FindControl<ITextControl>(Form_View, "lb填表人員X").Text = Get員工姓名(UserId);
|
||||
|
||||
顯示課程內容相關資料();
|
||||
送簽1.Visible = false;
|
||||
送簽2.Visible = false;
|
||||
btn填寫追蹤.Visible = false;
|
||||
pnl追蹤編輯.Visible = false;
|
||||
}
|
||||
|
||||
protected override void FormView_EditDataBound(object sender, EventArgs e)
|
||||
{
|
||||
base.FormView_EditDataBound(sender, e);
|
||||
訓練課程企劃List d = Dao訓練課程企劃.SelectOne(課程企劃ID);
|
||||
if (d.Count == 0)
|
||||
return;
|
||||
|
||||
FindControl<ITextControl>(Form_View, "lb課程企劃編號").Text = d[0].顯示編號;
|
||||
|
||||
顯示課程內容相關資料();
|
||||
送簽1.Visible = false;
|
||||
送簽2.Visible = false;
|
||||
btn填寫追蹤.Visible = false;
|
||||
pnl追蹤編輯.Visible = false;
|
||||
}
|
||||
|
||||
private void Set新增欄位顯示()
|
||||
{
|
||||
string[] 新欄位ID = { "lb觀察01", "lb觀察02", "lb觀察03", "lb觀察04", "lb觀察05", "lb觀察06", "lb觀察07", "lb觀察08", "lb觀察說明", "lb觀察紀錄1", "lb觀察紀錄2", "lb是否需後續追蹤", "lb追蹤事項", "lb處理結果追蹤" };
|
||||
foreach (string 控制項ID in 新欄位ID)
|
||||
{
|
||||
Label lb = FindControl<Label>(Form_View, 控制項ID);
|
||||
if (lb != null && String.IsNullOrEmpty(lb.Text.Trim()))
|
||||
{
|
||||
lb.Text = "2026年新增欄位";
|
||||
lb.ForeColor = System.Drawing.Color.Gray;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void FormView_ReadOnlyDataBound(object sender, EventArgs e)
|
||||
{
|
||||
base.FormView_ReadOnlyDataBound(sender, e);
|
||||
顯示課程內容相關資料();
|
||||
Set新增欄位顯示();
|
||||
|
||||
btn填寫追蹤.Visible = false;
|
||||
pnl追蹤編輯.Visible = false;
|
||||
主簽核已核准 = false;
|
||||
|
||||
if (Form_View.SelectedValue != null)
|
||||
{
|
||||
訓練課程企劃List d = Dao訓練課程企劃.SelectOne(課程企劃ID);
|
||||
if (d.Count == 0)
|
||||
return;
|
||||
|
||||
FindControl<ITextControl>(Form_View, "lb課程企劃編號").Text = d[0].顯示編號;
|
||||
|
||||
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
|
||||
|
||||
送簽1.表單ID = 表單ID;
|
||||
送簽1.訓練課程企劃編號 = 課程企劃ID;
|
||||
送簽1.編號2 = 課程序號;
|
||||
送簽1.表單ID格式 = String.Format("[{0}] {1}<br>[{2}] {3}",
|
||||
d[0].顯示編號, d[0].訓練名稱, 課程序號, ddl課程內容.SelectedItem.Text);
|
||||
|
||||
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
|
||||
送簽1.可送簽 = data[0].填表人員 == UserId;
|
||||
送簽1.Refresh();
|
||||
|
||||
表單簽核主檔 主簽核狀態 = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
|
||||
LinkButton btnUpdate = FindControl<LinkButton>(Form_View, "btnUpdate");
|
||||
if (btnUpdate != null)
|
||||
btnUpdate.Visible = !已送簽且未撤單(主簽核狀態);
|
||||
|
||||
bool 主單已送簽 = 已送簽且未撤單(主簽核狀態);
|
||||
主簽核已核准 = 主簽核狀態 != null
|
||||
&& 主簽核狀態.最終結果 == "Y"
|
||||
&& 主簽核狀態.應簽關數.CompareTo("D") != 0;
|
||||
|
||||
表單簽核主檔 trackingStatus = Dao表單簽核主檔.GetLastStatus("處理結果追蹤", 表單ID);
|
||||
bool 追蹤已核准 = trackingStatus != null
|
||||
&& trackingStatus.最終結果 == "Y"
|
||||
&& trackingStatus.應簽關數 != "D";
|
||||
|
||||
if (主單已送簽)
|
||||
{
|
||||
送簽2.表單ID = 表單ID;
|
||||
送簽2.訓練課程企劃編號 = 課程企劃ID;
|
||||
送簽2.編號2 = 課程序號;
|
||||
送簽2.表單ID格式 = String.Format("[{0}] {1}<br>[{2}] {3}",
|
||||
d[0].顯示編號, d[0].訓練名稱, 課程序號, ddl課程內容.SelectedItem.Text);
|
||||
送簽2.可送簽 = data[0].填表人員 == UserId;
|
||||
送簽2.Refresh();
|
||||
|
||||
btn填寫追蹤.Visible = data[0].填表人員 == UserId && !追蹤已核准;
|
||||
}
|
||||
}
|
||||
|
||||
送簽1.Visible = Form_View.SelectedValue != null;
|
||||
送簽2.Visible = Form_View.SelectedValue != null
|
||||
&& 已送簽且未撤單(Dao表單簽核主檔.GetLastStatus(
|
||||
"教學日誌暨異常狀況", String.Format("{0}|{1}", 課程企劃ID, 課程序號)));
|
||||
}
|
||||
|
||||
protected void btn填寫追蹤_Click(object sender, EventArgs e)
|
||||
{
|
||||
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
|
||||
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
|
||||
表單簽核主檔 主簽核狀態 = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
|
||||
if (data.Count == 0 || data[0].填表人員 != UserId || !已送簽且未撤單(主簽核狀態))
|
||||
{
|
||||
lbMessage.Text = "教學日誌暨異常狀況尚未送簽、已撤單或目前使用者無權限填寫。";
|
||||
return;
|
||||
}
|
||||
|
||||
txt追蹤內容.Text = data[0].處理結果追蹤;
|
||||
|
||||
btn填寫追蹤.Visible = false;
|
||||
pnl追蹤編輯.Visible = true;
|
||||
送簽1.Visible = false;
|
||||
送簽2.Visible = false;
|
||||
}
|
||||
|
||||
protected void btn追蹤存檔_Click(object sender, EventArgs e)
|
||||
{
|
||||
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
|
||||
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
|
||||
表單簽核主檔 主簽核狀態 = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
|
||||
if (data.Count == 0 || data[0].填表人員 != UserId || !已送簽且未撤單(主簽核狀態))
|
||||
{
|
||||
lbMessage.Text = "教學日誌暨異常狀況尚未送簽、已撤單或目前使用者無權限填寫。";
|
||||
pnl追蹤編輯.Visible = false;
|
||||
Form_View.DataBind();
|
||||
return;
|
||||
}
|
||||
|
||||
表單簽核主檔 trackingStatus = Dao表單簽核主檔.GetLastStatus("處理結果追蹤", 表單ID);
|
||||
if (trackingStatus != null && trackingStatus.最終結果 == "Y" && trackingStatus.應簽關數 != "D")
|
||||
{
|
||||
lbMessage.Text = "處理結果追蹤已完成簽核,不可修改。";
|
||||
pnl追蹤編輯.Visible = false;
|
||||
Form_View.DataBind();
|
||||
return;
|
||||
}
|
||||
|
||||
if (String.IsNullOrEmpty(txt追蹤內容.Text.Trim()))
|
||||
{
|
||||
lbMessage.Text = "請輸入處理結果追蹤。";
|
||||
return;
|
||||
}
|
||||
|
||||
Dao教學日誌.Update處理結果追蹤(課程企劃ID, 課程序號, txt追蹤內容.Text);
|
||||
|
||||
pnl追蹤編輯.Visible = false;
|
||||
Form_View.DataBind();
|
||||
}
|
||||
|
||||
protected void btn追蹤取消_Click(object sender, EventArgs e)
|
||||
{
|
||||
pnl追蹤編輯.Visible = false;
|
||||
Form_View.DataBind();
|
||||
}
|
||||
|
||||
protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
|
||||
{
|
||||
e.Values["課程企劃編號"] = 課程企劃ID;
|
||||
e.Values["處理結果追蹤"] = "";
|
||||
}
|
||||
|
||||
protected void FormView1_ItemUpdating(object sender, FormViewUpdateEventArgs e)
|
||||
{
|
||||
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
|
||||
表單簽核主檔 status = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
|
||||
if (已送簽且未撤單(status))
|
||||
{
|
||||
e.Cancel = true;
|
||||
lbMessage.Text = "教學日誌暨異常狀況已送簽,不可更正。";
|
||||
Form_View.ChangeMode(FormViewMode.ReadOnly);
|
||||
Form_View.DataBind();
|
||||
return;
|
||||
}
|
||||
|
||||
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
|
||||
if (data.Count > 0)
|
||||
e.NewValues["處理結果追蹤"] = data[0].處理結果追蹤;
|
||||
}
|
||||
|
||||
protected void cv觀察說明_ServerValidate(object source, ServerValidateEventArgs args)
|
||||
{
|
||||
args.IsValid = !String.IsNullOrEmpty(FindFormValue(source, "txt觀察說明").Trim());
|
||||
}
|
||||
|
||||
protected void cv異常情形_ServerValidate(object source, ServerValidateEventArgs args)
|
||||
{
|
||||
args.IsValid = FindFormValue(source, "ddl有無異常事項") == "0"
|
||||
|| !String.IsNullOrEmpty(FindFormValue(source, "txt異常情形").Trim());
|
||||
}
|
||||
|
||||
protected void cv追蹤事項_ServerValidate(object source, ServerValidateEventArgs args)
|
||||
{
|
||||
args.IsValid = FindFormValue(source, "ddl是否需後續追蹤") == "0"
|
||||
|| FindFormValue(source, "ddl是否需後續追蹤") == "1"
|
||||
|| !String.IsNullOrEmpty(FindFormValue(source, "txt追蹤事項").Trim());
|
||||
}
|
||||
|
||||
private bool 已送簽且未撤單(表單簽核主檔 status)
|
||||
{
|
||||
return status != null
|
||||
&& !(status.應簽關數 == "D" && status.已簽關數 == "D");
|
||||
}
|
||||
|
||||
protected void ds課程內容_Selected(object sender, ObjectDataSourceStatusEventArgs e)
|
||||
{
|
||||
// 只有在尚未顯示可送簽的日誌時才隱藏送簽區,避免覆寫已正確顯示的區塊
|
||||
if (Form_View.CurrentMode != FormViewMode.ReadOnly || Form_View.SelectedValue == null)
|
||||
{
|
||||
送簽1.Visible = false;
|
||||
送簽2.Visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user