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
+699
View File
@@ -0,0 +1,699 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="fmRyer.ascx.cs"
Inherits="forms_worker_fmRyer" %>
<%@ Register Assembly="WNET" Namespace="Wellan.Web.UI" TagPrefix="cc1" %>
<style>
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type=number] {
-moz-appearance: textfield;
}
.number-input-4 {
width: 100%;
text-align: center;
}
.number-input-2 {
width: 100%;
text-align: center;
}
.number-input-2-nofill {
width: 2rem;
text-align: center;
}
.text-center {
text-align: center;
}
table.gridLine {
color: Black;
border-color: #ddd;
border-width: 1px;
border-style: solid;
border-collapse: collapse;
background-color: #FFF
}
.focused-th {
background-color: #fff5bc;
color: black;
}
.ryer-head-container {
display: inline-block;
overflow-y: scroll;
margin: 0;
padding: 0;
border: 0;
margin-bottom: -4px;
}
.ryer-body-container {
display: inline-block;
height: calc(100vh - 420px);
overflow-y: scroll;
margin: 0 0 0 -1px;
padding: 0;
border: 1px solid #ccc;
}
.ryer-thead {
display: table;
margin: 0;
padding: 0;
overflow-y: scroll;
table-layout: fixed;
margin-left: -1px;
}
.ryer-tbody {
display: table;
table-layout: fixed;
margin-left: -1px;
margin-top: -1px;
}
.ryer-thead th {
overflow: hidden;
word-break: break-all;
line-height: 1.2rem;
}
.ryer-tbody td {
overflow: hidden;
word-break: break-all;
line-height: 1.2rem;
}
.ryer-list-line {
background-color: #EFF3FB;
}
.ryer-list-line:nth-child(4n+1) {
background-color: #FFF;
}
.ryer-list-line:nth-child(4n+2) {
background-color: #FFF;
}
.ryer-width-ryyer {
width: 3rem
}
.ryer-width-ryeno {
width: 4rem
}
.ryer-width-bpnme {
width: 4rem;
}
.ryer-width-bpsdy {
width: 4rem
}
.ryer-width-hours-display {
width: 2.5rem
}
.ryer-width-hours-input {
width: 2rem
}
.ryer-width-day-input {
width: 2rem
}
.ryer-width-hour-minute-input {
width: 5.5rem
}
.ryer-width-command {
width: 6.5rem;
min-width: 6.5rem;
max-width: 6.5rem;
}
.ryer-save-message {
z-index: 9999;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
min-width: 400px;
/*min-height: 40px;*/
border: 1px solid green;
border-radius: 5px;
background-color: green;
color: black;
text-align: center;
padding: 1em;
}
.ryer-save-message-success {
border: 1px solid #019b25;
background-color: #c1ffc1;
}
.ryer-save-message-fail {
border: 1px solid #ff6363;
background-color: #ffc1c1;
}
/* .ryer-save-message > span {
display: block;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
*/
@media screen and (max-width: 1600px) {
.ryer-head-container {
width: 1800px;
}
.ryer-body-container {
width: 1800px;
}
.ryer-width-ryyer {
width: 2rem
}
.ryer-width-ryeno {
width: 3.5rem
}
.ryer-width-bpnme {
width: 3rem;
}
.ryer-width-bpsdy {
width: 3.5rem
}
.ryer-width-hours-display {
width: 2rem
}
.ryer-width-hours-input {
width: 2rem
}
.ryer-width-day-input {
width: 2rem
}
.ryer-width-command {
width: 3.5rem
}
}
</style>
<cc1:WLabel ID="WLabel1" runat="server" CssClass="pageTitle" Text="年度特休設定"
TextMessageId=""></cc1:WLabel>
<asp:CustomValidator ID="cvMessage" runat="server" Display="None"></asp:CustomValidator>
<table>
<tr>
<td style="width:50%; max-width:50%; vertical-align: top;">
<table>
<tr>
<td style="width: 6em">
<asp:Label ID="Label1" runat="server" Text="年度:"></asp:Label>
</td>
<td style="width: 6em">
<asp:TextBox ID="txtYear" runat="server" Columns="4" Width="100%"></asp:TextBox>
</td>
<td style="width: 2em" class="text-center">
<asp:Label ID="Label4" runat="server" Text=""></asp:Label>
</td>
<td style="width: 6em">
<asp:TextBox ID="txtYearTo" runat="server" Columns="4" Width="100%"></asp:TextBox>
</td>
<td style="width: 6em">
<asp:Button ID="btnYY" runat="server" CssClass="button" OnClick="btnYY_Click"
Text="確認年度" />
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text="專案:"></asp:Label>
</td>
<td colspan="7">
<asp:DropDownList ID="ddl專案" runat="server">
</asp:DropDownList>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label5" runat="server" Text="人員編號:"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtRAENO" runat="server" Columns="5" Width="100%"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnSearch" runat="server" CssClass="button"
OnClick="btnSearch_Click"
Text="查詢" />
</td>
</tr>
</table>
</td>
<td style="width:50%; max-width:50%; vertical-align: top; font-size: 10pt; background-color: cornsilk; padding: 5pt 5pt">
<ol style="padding-inline-start: 16px; margin: 0;">
<li>跨年度時,專案條件會隱藏 <b>【桃竹苗】展譽總公司</b> 與 <b>【桃竹苗】新譽總公司</b>,且無法查詢到這兩個專案裡的人員</li>
<li>生效日空白為 1 日,31 為月底日</li>
<li>結算指的是<b>計算離職或年底折算薪資時數</b>以及將<b>遞延時數帶入下年度</b></li>
<li>本年至今的年初時數計算方式依照計畫設定有以下二種:<br />
<span style="margin-left: 25px">1. 無年初特休時數,預設為0</span>
<span style="margin-left: 25px">2. 預給去年特休時數:去年年初時數 + 去年1月至12月生效時數(正數)</span>
</li>
<li style="clear: both">特休結算資料輸入方式:
<ol>
<li>在職同仁特休未休結算請於結算的月份以負數方式輸入結算的時數,如剩 14 小時,請輸入「-14」,並請至薪資加減項新增結算金額。</li>
<li>離職人員特休未休結算及年底特休結算請於「折算薪資時數」及「遞延下年時數」欄位輸入時數,結算金額會自動匯入薪資加減項,請自行核對。另於隔年度特休表之遞延時數欄位確認時數是否正確。</li>
</ol>
</li>
</ol>
</td>
</tr>
</table>
<asp:ObjectDataSource ID="dsRyer" runat="server" OldValuesParameterFormatString="OLD_{0}"
OnSelecting="dsRyer_Selecting"
SelectMethod="SelectProject" TypeName="RyerDAC">
<SelectParameters>
<asp:Parameter Name="RYYERFrom" Type="Int32" />
<asp:Parameter Name="RYYERTo" Type="Int32" />
<asp:Parameter Name="RAPYN" Type="String" />
<asp:Parameter Name="RANUM" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:ListView ID="ListView1"
runat="server"
Visible="false"
DataSourceID="dsRyer"
DataKeyNames="RYENO,RYYER"
OnItemCommand="ListView1_ItemCommand"
OnItemDataBound="ListView1_ItemDataBound">
<LayoutTemplate>
<div class="ryer-head-container">
<table runat="server" class="gridLine ryer-thead" cellspacing="0" cellpadding="4" border="1">
<tr runat="server" class="gridHeader">
<th runat="server" rowspan="2" class="ryer-width-command">操作</th>
<th runat="server" rowspan="2" class="ryer-width-ryyer">年度</th>
<th runat="server" rowspan="1" class="ryer-width-ryeno">人員編號</th>
<th runat="server" rowspan="1" class="ryer-width-ryeno">到職日</th>
<th runat="server" rowspan="1" colspan="5">本年至今</th>
<th runat="server" rowspan="1" class="ryer-width-hours-display">上年</th>
<th runat="server" colspan="2">1月</th>
<th runat="server" colspan="2">2月</th>
<th runat="server" colspan="2">3月</th>
<th runat="server" colspan="2">4月</th>
<th runat="server" colspan="2">5月</th>
<th runat="server" colspan="2">6月</th>
<th runat="server" colspan="2">7月</th>
<th runat="server" colspan="2">8月</th>
<th runat="server" colspan="2">9月</th>
<th runat="server" colspan="2">10月</th>
<th runat="server" colspan="2">11月</th>
<th runat="server" colspan="2">12月</th>
<th runat="server" rowspan="2" class="ryer-width-hour-minute-input" data-month="SLY">折算<br />
薪資<br />
時數</th>
<th runat="server" rowspan="2" class="ryer-width-hour-minute-input" data-month="NXT">遞延<br />
下年<br />
時數</th>
</tr>
<tr runat="server" class="gridHeader">
<th runat="server" class="ryer-width-ryeno">人員姓名</th>
<th runat="server" class="ryer-width-ryeno">離職日</th>
<th runat="server" class="ryer-width-hour-minute-input" data-month="YST">年初</th>
<th runat="server" class="ryer-width-hours-display">+<br />
遞延</th>
<th runat="server" class="ryer-width-hours-display">+<br />
生效</th>
<th runat="server" class="ryer-width-hours-display">-<br />
已休</th>
<th runat="server" class="ryer-width-hours-display">=<br />
未休</th>
<th runat="server" class="ryer-width-hours-display">未休</th>
<th runat="server" class="ryer-width-hours-input" data-month="1H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="1D">生<br/>效<br/>日</th>
<th runat="server" class="ryer-width-hours-input" data-month="2H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="2D">生<br/>效<br/>日</th>
<th runat="server" class="ryer-width-hours-input" data-month="3H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="3D">生<br/>效<br/>日</th>
<th runat="server" class="ryer-width-hours-input" data-month="4H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="4D">生<br/>效<br/>日</th>
<th runat="server" class="ryer-width-hours-input" data-month="5H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="5D">生<br/>效<br/>日</th>
<th runat="server" class="ryer-width-hours-input" data-month="6H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="6D">生<br/>效<br/>日</th>
<th runat="server" class="ryer-width-hours-input" data-month="7H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="7D">生<br/>效<br/>日</th>
<th runat="server" class="ryer-width-hours-input" data-month="8H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="8D">生<br/>效<br/>日</th>
<th runat="server" class="ryer-width-hours-input" data-month="9H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="9D">生<br/>效<br/>日</th>
<th runat="server" class="ryer-width-hours-input" data-month="10H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="10D">生<br/>效<br/>日</th>
<th runat="server" class="ryer-width-hours-input" data-month="11H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="11D">生<br/>效<br/>日</th>
<th runat="server" class="ryer-width-hours-input" data-month="12H">時<br/>數</th>
<th runat="server" class="ryer-width-day-input" data-month="12D">生<br/>效<br/>日</th>
</tr>
</table>
</div>
<div class="ryer-body-container">
<table runat="server" class="gridLine ryer-tbody" cellspacing="0" cellpadding="4" border="1">
<tr runat="server" id="itemPlaceHolder"></tr>
</table>
</div>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server" class="ryer-list-line">
<td class="text-center ryer-width-command" rowspan="2">
<asp:Button ID="btnSave" runat="server"
CommandArgument='<%# Eval("RYENO", "{0:c}") %>'
CommandName="Save" Text="存檔" />
<asp:Button ID="btnFinal" runat="server"
CommandArgument='<%# Eval("RYENO", "{0:c}") %>'
CommandName="Final" Text="存檔並結算" />
</td>
<td class="text-center ryer-width-ryyer" rowspan="2">
<asp:Label runat="server" Text='<%# (Convert.ToInt32(Eval("RYYER", "{0}")) - Wellan.Common.WGuard1.CY11).ToString() %>'></asp:Label>
<asp:HiddenField ID="RYYER" runat="server" Value='<%# Bind("RYYER") %>' />
</td>
<td class="text-center ryer-width-ryeno">
<b>
<asp:Label ID="RYENO" runat="server" Text='<%# Eval("RYENO") %>'></asp:Label></b>
</td>
<td class="text-center ryer-width-ryeno">
<asp:Label runat="server" Text='<%# Eval("BPSDY", "{0:yyyyMMdd}") %>'></asp:Label>
</td>
<td class="text-center ryer-width-hour-minute-input" rowspan="2">
<asp:TextBox ID="RYYST_H" runat="server" MaxLength="4" Text='<%# Bind("RYYST_H") %>' CssClass="number-input-2-nofill" data-month="YST"></asp:TextBox>
: <asp:TextBox ID="RYYST_M" runat="server" MaxLength="4" Text='<%# Bind("RYYST_M") %>' CssClass="number-input-2-nofill" data-month="YST"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-display" rowspan="2">
<asp:Label ID="RYYXT" runat="server" Text='<%# (Eval("RYYXT_D") != DBNull.Value ? Eval("RYYXT_D") : "0:0") %>'></asp:Label>
</td>
<td class="text-center ryer-width-hours-display" rowspan="2">
<asp:Label ID="RYVLD" runat="server" Text='<%# (Eval("RYVLD") != DBNull.Value ? Eval("RYVLD") : "0:0") %>'></asp:Label>
</td>
<td class="text-center ryer-width-hours-display" rowspan="2">
<asp:Label ID="RYUST" runat="server" Text='<%# (Eval("RYUST") != DBNull.Value ? Eval("RYUST") : "0:0") %>'></asp:Label>
</td>
<td class="text-center ryer-width-hours-display" rowspan="2">
<asp:Label ID="RYLFT" runat="server" Text='<%# (Eval("RYLFT") != DBNull.Value ? Eval("RYLFT") : "0:0") %>'></asp:Label>
</td>
<td class="text-center ryer-width-hours-display" rowspan="2">
<asp:Label ID="RYPLF" runat="server" Text='<%# (Eval("RYPLF") != DBNull.Value ? Eval("RYPLF") : "0:0") %>'></asp:Label>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH01" runat="server" MaxLength="4" Text='<%# Bind("RYH01") %>' CssClass="number-input-4" data-month="1H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD01" runat="server" MaxLength="2" Text='<%# Bind("RYD01") %>' CssClass="number-input-2" data-month="1D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH02" runat="server" MaxLength="4" Text='<%# Bind("RYH02") %>' CssClass="number-input-4" data-month="2H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD02" runat="server" MaxLength="2" Text='<%# Bind("RYD02") %>' CssClass="number-input-2" data-month="2D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH03" runat="server" MaxLength="4" Text='<%# Bind("RYH03") %>' CssClass="number-input-4" data-month="3H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD03" runat="server" MaxLength="2" Text='<%# Bind("RYD03") %>' CssClass="number-input-2" data-month="3D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH04" runat="server" MaxLength="4" Text='<%# Bind("RYH04") %>' CssClass="number-input-4" data-month="4H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD04" runat="server" MaxLength="2" Text='<%# Bind("RYD04") %>' CssClass="number-input-2" data-month="4D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH05" runat="server" MaxLength="4" Text='<%# Bind("RYH05") %>' CssClass="number-input-4" data-month="5H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD05" runat="server" MaxLength="2" Text='<%# Bind("RYD05") %>' CssClass="number-input-2" data-month="5D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH06" runat="server" MaxLength="4" Text='<%# Bind("RYH06") %>' CssClass="number-input-4" data-month="6H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD06" runat="server" MaxLength="2" Text='<%# Bind("RYD06") %>' CssClass="number-input-2" data-month="6D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH07" runat="server" MaxLength="4" Text='<%# Bind("RYH07") %>' CssClass="number-input-4" data-month="7H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD07" runat="server" MaxLength="2" Text='<%# Bind("RYD07") %>' CssClass="number-input-2" data-month="7D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH08" runat="server" MaxLength="4" Text='<%# Bind("RYH08") %>' CssClass="number-input-4" data-month="8H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD08" runat="server" MaxLength="2" Text='<%# Bind("RYD08") %>' CssClass="number-input-2" data-month="8D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH09" runat="server" MaxLength="4" Text='<%# Bind("RYH09") %>' CssClass="number-input-4" data-month="9H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD09" runat="server" MaxLength="2" Text='<%# Bind("RYD09") %>' CssClass="number-input-2" data-month="9D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH10" runat="server" MaxLength="4" Text='<%# Bind("RYH10") %>' CssClass="number-input-4" data-month="10H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD10" runat="server" MaxLength="2" Text='<%# Bind("RYD10") %>' CssClass="number-input-2" data-month="10D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH11" runat="server" MaxLength="4" Text='<%# Bind("RYH11") %>' CssClass="number-input-4" data-month="11H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD11" runat="server" MaxLength="2" Text='<%# Bind("RYD11") %>' CssClass="number-input-2" data-month="11D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hours-input">
<asp:TextBox ID="RYH12" runat="server" MaxLength="4" Text='<%# Bind("RYH12") %>' CssClass="number-input-4" data-month="12H"></asp:TextBox>
</td>
<td class="text-center ryer-width-day-input">
<asp:TextBox ID="RYD12" runat="server" MaxLength="2" Text='<%# Bind("RYD12") %>' CssClass="number-input-2" data-month="12D"></asp:TextBox>
</td>
<td class="text-center ryer-width-hour-minute-input" rowspan="2">
<asp:TextBox ID="RYSLY_H" runat="server" MaxLength="4" Text='<%# Bind("RYSLY_H") %>' CssClass="number-input-2-nofill" data-month="SLY"></asp:TextBox>
: <asp:TextBox ID="RYSLY_M" runat="server" MaxLength="4" Text='<%# Bind("RYSLY_M") %>' CssClass="number-input-2-nofill" data-month="SLY"></asp:TextBox>
</td>
<td class="text-center ryer-width-hour-minute-input" rowspan="2">
<asp:TextBox ID="RYNXT_H" runat="server" MaxLength="4" Text='<%# Bind("RYNXT_H") %>' CssClass="number-input-2-nofill" data-month="NXT"></asp:TextBox>
: <asp:TextBox ID="RYNXT_M" runat="server" MaxLength="4" Text='<%# Bind("RYNXT_M") %>' CssClass="number-input-2-nofill" data-month="NXT"></asp:TextBox>
</td>
</tr>
<tr runat="server" class="ryer-list-line">
<td class="text-center">
<asp:Label runat="server" Text='<%# Eval("BPNME") %>'></asp:Label>
</td>
<td class="text-center">
<asp:Label runat="server" Text='<%# Eval("BPEDY", "{0:yyyyMMdd}") %>'></asp:Label>
</td>
<th colspan="1">備註</th>
<td colspan="23">
<asp:TextBox ID="RYRMK" runat="server" Columns="80" Width="100%" Text='<%# Bind("RYRMK") %>'></asp:TextBox>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
<div id="SaveMessageDiv" class="ryer-save-message hide">
<span id="SaveMessage"></span>
</div>
<script>
$(document).ready(() => {
$(".number-input-2").attr("type", "number");
$(".number-input-4").attr("type", "number");
$("input[data-month]").focus((e) => {
var data_month = e.target.attributes["data-month"].value;
$("th[data-month]").removeClass("focused-th");
$(`th[data-month=${data_month}]`).addClass("focused-th");
})
$("input[data-month]").blur((e) => {
$("th[data-month]").removeClass("focused-th");
})
})
function Save(ryyer, ryeno, ryvld_id, ryust_id, rylft_id, ryplf_id, ryyst_h_id, ryyst_m_id,
ryh01_id, ryd01_id, ryh02_id, ryd02_id, ryh03_id, ryd03_id, ryh04_id, ryd04_id, ryh05_id, ryd05_id, ryh06_id, ryd06_id,
ryh07_id, ryd07_id, ryh08_id, ryd08_id, ryh09_id, ryd09_id, ryh10_id, ryd10_id, ryh11_id, ryd11_id, ryh12_id, ryd12_id,
rysly_h_id, rysly_m_id, rynxt_h_id, rynxt_m_id, ryrmk_id) {
var saveObj = {
item: {
userid: "<%= UserId %>",
ryeno: ryeno,
ryyer: ryyer,
ryyst_h: $(ryyst_h_id).val(),
ryyst_m: $(ryyst_m_id).val(),
ryh01: $(ryh01_id).val(),
ryh02: $(ryh02_id).val(),
ryh03: $(ryh03_id).val(),
ryh04: $(ryh04_id).val(),
ryh05: $(ryh05_id).val(),
ryh06: $(ryh06_id).val(),
ryh07: $(ryh07_id).val(),
ryh08: $(ryh08_id).val(),
ryh09: $(ryh09_id).val(),
ryh10: $(ryh10_id).val(),
ryh11: $(ryh11_id).val(),
ryh12: $(ryh12_id).val(),
ryd01: $(ryd01_id).val(),
ryd02: $(ryd02_id).val(),
ryd03: $(ryd03_id).val(),
ryd04: $(ryd04_id).val(),
ryd05: $(ryd05_id).val(),
ryd06: $(ryd06_id).val(),
ryd07: $(ryd07_id).val(),
ryd08: $(ryd08_id).val(),
ryd09: $(ryd09_id).val(),
ryd10: $(ryd10_id).val(),
ryd11: $(ryd11_id).val(),
ryd12: $(ryd12_id).val(),
rysly_h: $(rysly_h_id).val(),
rysly_m: $(rysly_m_id).val(),
rynxt_h: $(rynxt_h_id).val(),
rynxt_m: $(rynxt_m_id).val(),
ryrmk: $(ryrmk_id).val(),
}
}
$.ajax({
type: "POST",
url: "forms/worker/wmRyer.asmx/Save",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(saveObj),
dataType: "json",
success: function (response) {
var result = response.d;
if (result.result === 0) {
$(ryvld_id).text(result.ryvld);
$(ryust_id).text(result.ryust);
$(rylft_id).text(result.rylft);
ShowSaveMessage(`人員編號 ${saveObj.item.ryeno} 年度 ${1 * saveObj.item.ryyer - 1911} 存檔成功`, true);
}
else {
ShowSaveMessage(`人員編號 ${saveObj.item.ryeno} 年度 ${1 * saveObj.item.ryyer - 1911} 存檔失敗:` + result.message, false);
}
},
error: function (result) {
}
});
}
function Final(ryyer, ryeno, ryvld_id, ryust_id, rylft_id, ryplf_id, ryyst_h_id, ryyst_m_id,
ryh01_id, ryd01_id, ryh02_id, ryd02_id, ryh03_id, ryd03_id, ryh04_id, ryd04_id, ryh05_id, ryd05_id, ryh06_id, ryd06_id,
ryh07_id, ryd07_id, ryh08_id, ryd08_id, ryh09_id, ryd09_id, ryh10_id, ryd10_id, ryh11_id, ryd11_id, ryh12_id, ryd12_id,
rysly_h_id, rysly_m_id, rynxt_h_id, rynxt_m_id, ryrmk_id) {
var saveObj = {
item: {
userid: "<%= UserId %>",
ryeno: ryeno,
ryyer: ryyer,
ryyst_h: $(ryyst_h_id).val(),
ryyst_m: $(ryyst_m_id).val(),
ryh01: $(ryh01_id).val(),
ryh02: $(ryh02_id).val(),
ryh03: $(ryh03_id).val(),
ryh04: $(ryh04_id).val(),
ryh05: $(ryh05_id).val(),
ryh06: $(ryh06_id).val(),
ryh07: $(ryh07_id).val(),
ryh08: $(ryh08_id).val(),
ryh09: $(ryh09_id).val(),
ryh10: $(ryh10_id).val(),
ryh11: $(ryh11_id).val(),
ryh12: $(ryh12_id).val(),
ryd01: $(ryd01_id).val(),
ryd02: $(ryd02_id).val(),
ryd03: $(ryd03_id).val(),
ryd04: $(ryd04_id).val(),
ryd05: $(ryd05_id).val(),
ryd06: $(ryd06_id).val(),
ryd07: $(ryd07_id).val(),
ryd08: $(ryd08_id).val(),
ryd09: $(ryd09_id).val(),
ryd10: $(ryd10_id).val(),
ryd11: $(ryd11_id).val(),
ryd12: $(ryd12_id).val(),
rysly_h: $(rysly_h_id).val(),
rysly_m: $(rysly_m_id).val(),
rynxt_h: $(rynxt_h_id).val(),
rynxt_m: $(rynxt_m_id).val(),
ryrmk: $(ryrmk_id).val(),
}
}
$.ajax({
type: "POST",
url: "forms/worker/wmRyer.asmx/Final",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(saveObj),
dataType: "json",
success: function (response) {
var result = response.d;
if (result.result === 0) {
$(ryvld_id).text(result.ryvld);
$(ryust_id).text(result.ryust);
$(rylft_id).text(result.rylft);
ShowSaveMessage(`${result.message}`, true);
}
else {
ShowSaveMessage(`${result.message}`, false);
}
},
error: function (result) {
}
});
}
var hideTimeout = null;
function ShowSaveMessage(message, success) {
$("#SaveMessageDiv").removeClass("ryer-save-message-success");
$("#SaveMessageDiv").removeClass("ryer-save-message-fail");
if (success) {
$("#SaveMessageDiv").addClass("ryer-save-message-success");
} else {
$("#SaveMessageDiv").addClass("ryer-save-message-fail");
}
$("#SaveMessageDiv").removeClass("hide");
$("#SaveMessage").text(message);
if (hideTimeout != null) {
clearTimeout(hideTimeout);
}
hideTimeout = setTimeout(() => {
$("#SaveMessageDiv").addClass("hide");
hideTimeout = null;
}, 5000);
}
</script>