Files
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

700 lines
30 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<%@ 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>