2026年6月8日 星期一

V1060305A – 結案 – 流水號.前面補 ‘0’ – GET_NEXT_SERNO - String.PadLeft(5, '0')

 目的:V1060305A – 結案 流水號 前面補 ‘0’ – GET_NEXT_SERNO  

處理說明: 1> 流水號 5 碼 - 前面補 '0'
                        Tmp_NEXT_SERNO_Str = Tmp_NEXT_SERNO.ToString().PadLeft(5, '0'); 



1>*.cs
//取得  AMM_CHKCHG_ASN_BAK.MAX(BAK_SERNO)   最大值+1
public string GET_NEXT_SERNO(string par_PROJID,string par_TYPE,string par_ITEM,string par_ASN)
        {
            string Tmp_Sql;
            string Tmp_MAX_SERNO_STR;
            Int32 Tmp_MAX_SERNO, Tmp_NEXT_SERNO;
            string Tmp_NEXT_SERNO_Str;
            Tmp_Sql = " SELECT   MAX(CAST(BAK_SERNO as integer ))  "
                            + "  FROM    AMM_CHKCHG_ASN_BAK   "
                            +"   WHERE  PROJID="+myfunc.AA(par_PROJID)
                            +"   AND        TYPE=" + myfunc.AA(par_TYPE)
                            +"   AND        ITEM= " + myfunc.AA(par_ITEM)
                            + "   AND        ASN=" + myfunc.AA(par_ASN)
                            ;
            Tmp_MAX_SERNO_STR = myfunc.SqlValue(Tmp_Sql);
            Tmp_MAX_SERNO = myfunc.str2int(Tmp_MAX_SERNO_STR);
            if (myfunc.checkisnull(Tmp_MAX_SERNO.ToString()))
            {
                Tmp_NEXT_SERNO = 1;
            }
            else
            {
                Tmp_NEXT_SERNO = Tmp_MAX_SERNO + 1;
            };
            Tmp_NEXT_SERNO_Str = Tmp_NEXT_SERNO.ToString().PadLeft(5, '0'); ;
            return Tmp_NEXT_SERNO_Str;
        }  // end of  GET_NEXT_SERNO

V1060305A – 專案定更定檢結案 – 關閉子畫面 & 重新顯示 - fireHandler & fireEvent - getUrlStr - Update

 目的: V1060305A – 專案定更定檢結案 關閉子畫面 & 重新顯示  - fireHandler & fireEvent

處理說明: 1>關閉子畫面 & 重新顯示  - fireHandler & fireEvent
                      Ext.getCmp("btn_Show").fireHandler();
                      Ext.getCmp("sub_V1060305A_CancelBtn").fireEvent('click');


1>*.js
  var Tmp_url = '../api/V1060305AAPI/UPDATE_AMM_CHKCHG_ASN';        
  var Tmp_RtnStr = getUrlStr(Tmp_url, np, "更新 實體定更定檢件屆期檔(AMM_CHKCHG_ASN)");
        if (!checkRtnOK(Tmp_RtnStr)) {
            mywarnalert(Tmp_RtnStr);
            return;
        }
        else {
            mysuccessalert(Tmp_RtnStr);
            Ext.getCmp("btn_Show").fireHandler();
            Ext.getCmp("sub_V1060305A_CancelBtn").fireEvent('click');
        }


2>*.cs
[HttpPost]
        public dynamic UPDATE_AMM_CHKCHG_ASN()
        {
            //取得參數值
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            string Tmp_PROJID = nvc["PROJID"];
            string Tmp_TYPE = nvc["TYPE"];
            string Tmp_ITEM = nvc["ITEM"];
            string Tmp_ASN = nvc["ASN"];
            string Tmp_IS_MULTI = nvc["IS_MULTI"];
            //更新 AMM_CHKCHG_ASN 的欄位值
            string Tmp_UPD_FLD_STR1,Tmp_UPD_FLD_VAL1;
            string Tmp_UPD_FLD_STR2, Tmp_UPD_FLD_VAL2;
            string Tmp_TMVAL1, Tmp_TMVAL2;
            
            Tmp_UPD_FLD_STR1 = nvc["UPD_FLD_STR1"];
            Tmp_UPD_FLD_VAL1 = nvc["UPD_FLD_VAL1"];
            Tmp_UPD_FLD_STR2 = nvc["UPD_FLD_STR2"];
            Tmp_UPD_FLD_VAL2 = nvc["UPD_FLD_VAL2"];
            Tmp_TMVAL1= nvc["TMVAL1"];
            Tmp_TMVAL2 = nvc["TMVAL2"];

            string n = funId + "_UPDATE_AMM_CHKCHG_ASN";
            string Tmp_Sql="";
            string Tmp_RtnMsg;
            try
            {
                //備份每筆工單                
                int Tmp_cnt;                
                string Tmp_NEXT_SERNO;
                Tmp_NEXT_SERNO = GET_NEXT_SERNO(Tmp_PROJID, Tmp_TYPE, Tmp_ITEM, Tmp_ASN);

                string Tmp_SERNO, Tmp_IS_IN_FCHK, Tmp_INS_DT, Tmp_MK_DT, Tmp_STK_DT;
                string Tmp_L_CHKCHG_DT;
                string Tmp_L_FLYHR, Tmp_L_FLYAC, Tmp_L_ENGHR, Tmp_L_APUHR, Tmp_L_APUAC, Tmp_L_APUDT;
                string Tmp_L_FLYDT, Tmp_L_TURBOAC, Tmp_CHKCHG_STS, Tmp_REMARK;
                string Tmp_MKID, Tmp_MKDT, Tmp_CLSID, Tmp_CLSDT;
                


                DataTable dt = new DataTable();
                Tmp_Sql = " SELECT   PROJID,TYPE,ITEM,ASN, "
                                               + "  SERNO,IS_IN_FCHK,INS_DT,MK_DT,STK_DT, "
                                               + "  L_CHKCHG_DT,TMVAL1,TMVAL2,"
                                               + "  L_FLYHR,L_FLYAC,L_ENGHR,L_APUHR,L_APUAC,L_APUDT,"
                                               + "  L_FLYDT,L_TURBOAC,CHKCHG_STS,REMARK,"
                                               + "  MKID,MKDT,CLSID,CLSDT "
                                 + "  FROM   AMM_CHKCHG_ASN   "
                                 + "  WHERE  1 = 1  "                                 
                                + "   AND       PROJID = " + myfunc.AA(Tmp_PROJID)
                                + "   AND       TYPE = " + myfunc.AA(Tmp_TYPE)
                                + "   AND        ITEM = " + myfunc.AA(Tmp_ITEM)
                                + "    AND        ASN=" + myfunc.AA(Tmp_ASN);
                dt = myfunc.SqlOpen(dt, Tmp_Sql);
                foreach (DataRow dr in dt.Rows)
                {
                    Tmp_SERNO = dr["SERNO"].ToString();
                    Tmp_IS_IN_FCHK = dr["IS_IN_FCHK"].ToString();
                    Tmp_INS_DT = dr["INS_DT"].ToString();
                    Tmp_MK_DT = dr["MK_DT"].ToString();
                    Tmp_STK_DT = dr["STK_DT"].ToString();
                    Tmp_L_CHKCHG_DT = dr["L_CHKCHG_DT"].ToString();
                    Tmp_TMVAL1 = dr["TMVAL1"].ToString();
                    Tmp_TMVAL2 = dr["TMVAL2"].ToString();
                    //+ "  L_FLYHR,L_FLYAC,L_ENGHR,L_APUHR,L_APUAC,L_APUDT,"
                    Tmp_L_FLYHR = dr["L_FLYHR"].ToString();
                    Tmp_L_FLYAC = dr["L_FLYAC"].ToString();
                    Tmp_L_ENGHR = dr["L_ENGHR"].ToString();
                    Tmp_L_APUHR = dr["L_APUHR"].ToString();
                    Tmp_L_APUAC = dr["L_APUAC"].ToString();
                    Tmp_L_APUDT = dr["L_APUDT"].ToString();
                    //+"  L_FLYDT,L_TURBOAC,CHKCHG_STS,REMARK,"
                    Tmp_L_FLYDT = dr["L_FLYDT"].ToString();
                    Tmp_L_TURBOAC = dr["L_TURBOAC"].ToString();
                    Tmp_CHKCHG_STS = dr["CHKCHG_STS"].ToString();
                    Tmp_REMARK = dr["REMARK"].ToString();
                    //+ "  MKID,MKDT,CLSID,CLSDT "
                    Tmp_MKID = dr["MKID"].ToString();
                    Tmp_MKDT = dr["MKDT"].ToString();
                    Tmp_CLSID = dr["CLSID"].ToString();
                    Tmp_CLSDT = dr["CLSDT"].ToString();
                    //STEP1:  備份  AMM_CHKCHG_ASN 資料 至 AMM_CHKCHG_ASN_BAK
                    Tmp_Sql = " INSERT INTO   AMM_CHKCHG_ASN_BAK "
                               + "  ( PROJID,TYPE,ITEM,ASN,BAK_SERNO, "
                                  + "  SERNO,IS_IN_FCHK,INS_DT,MK_DT,STK_DT, "
                                  + "  L_CHKCHG_DT,TMVAL1,TMVAL2,"
                                  + "  L_FLYHR,L_FLYAC,L_ENGHR,L_APUHR,L_APUAC,L_APUDT,"
                                  + "  L_FLYDT,L_TURBOAC,CHKCHG_STS,REMARK,"
                                  + "  MKID,MKDT,CLSID,CLSDT "
                                  + " ) "
                               + " VALUES "
                               + "  (" + myfunc.AA(Tmp_PROJID) + "," + myfunc.AA(Tmp_TYPE) + "," + myfunc.AA(Tmp_ITEM) + "," + myfunc.AA(Tmp_ASN) + "," + myfunc.AA(Tmp_NEXT_SERNO) + ","
                                        + myfunc.AA(Tmp_SERNO) + "," + myfunc.AA(Tmp_IS_IN_FCHK) + "," + myfunc.AA(Tmp_INS_DT) + "," + myfunc.AA(Tmp_MK_DT) + "," + myfunc.AA(Tmp_STK_DT) + ","
                                        + myfunc.AA(Tmp_L_CHKCHG_DT) + "," + myfunc.AA(Tmp_TMVAL1) + "," + myfunc.AA(Tmp_TMVAL2) + ","
                                        + myfunc.AA(Tmp_L_FLYHR) + "," + myfunc.AA(Tmp_L_FLYAC) + "," + myfunc.AA(Tmp_L_ENGHR) + "," + myfunc.AA(Tmp_L_APUHR) + "," + myfunc.AA(Tmp_L_APUAC) + "," + myfunc.AA(Tmp_L_APUDT) + ","
                                        + myfunc.AA(Tmp_L_FLYDT) + "," + myfunc.AA(Tmp_L_TURBOAC) + "," + myfunc.AA(Tmp_CHKCHG_STS) + "," + myfunc.AA(Tmp_REMARK) + ","
                                        + myfunc.AA(Tmp_MKID) + "," + myfunc.AA(Tmp_MKDT) + "," + myfunc.AA(Tmp_CLSID) + "," + myfunc.AA(Tmp_CLSDT)
                                + ")";
                    myfunc.SqlExec(Tmp_Sql);
                }   // end of  foreach (DataRow dr in dt.Rows)

                //STEP2: 更新 AMM_CHKCHG_ASN 資枓.
                Tmp_Sql = "  UPDATE   AMM_CHKCHG_ASN "
                               + "   SET   " + Tmp_UPD_FLD_STR1 + "=" + myfunc.AA(Tmp_UPD_FLD_VAL1) + ","
                                                 + "TMVAL1=" + myfunc.AA(Tmp_TMVAL1) ;
                if (Tmp_IS_MULTI == "Y")
                {
                    Tmp_Sql = Tmp_Sql + ","
                                                     + Tmp_UPD_FLD_STR2 + "=" + myfunc.AA(Tmp_UPD_FLD_VAL2) + ","
                                                      + " TMVAL2=" + myfunc.AA(Tmp_TMVAL2);
                }
                Tmp_Sql=Tmp_Sql
                               + " WHERE   PROJID=" + myfunc.AA(Tmp_PROJID)
                               + "  AND       TYPE=" + myfunc.AA(Tmp_TYPE)
                               + "  AND        ITEM=" + myfunc.AA(Tmp_ITEM)
                               + "  AND       ASN=" + myfunc.AA(Tmp_ASN);
                myfunc.SqlExec(Tmp_Sql);
                Tmp_RtnMsg = "專案別(" + Tmp_PROJID + ")<br>"
                                        +"分類(" +Tmp_TYPE+")<br>"
                                        +"ITEM("+Tmp_ITEM+")<br>"
                                        +"機號("+Tmp_ASN+")<br>"
                                         +"結案更新完成 !!<br>";
            }  // end of try
            catch (Exception e)
            {
                Tmp_RtnMsg = myfunc.Get1ORA(e.Message);
                Tmp_RtnMsg = "錯誤: 結案更新失敗!!<br>"                                         
                                         + Tmp_RtnMsg
                                         +"SQL如下:<br>"
                                         +Tmp_Sql;
            }
            return Tmp_RtnMsg;            
        }  // end of UPDATE_AMM_CHKCHG_ASN



V1060305A – 實體定更定檢屆期處理 –[結案]– 飛行小時分鐘累加函式 - TIME_ADD() , Ex: TIME_ADD('155:32','50')='205:32'

目的: V1060305A – 實體定更定檢屆期處理 –[結案]– 飛行小時分鐘累加函式 

      à 155:32+50=205:32

處理說明: 1>飛行小時分鐘累加函式 à 155:32+50=205:32
                  2>*.js  函式 
                         TIME_ADD(‘155:32’,’50’)=205:32


1>myfunc.js   TIME_ADD(par_TM_STR,par_HR)

/**
* 函式名稱: TIME_ADD  ( par_TM_STR,par_HR)
* 目的: 累加飛行時間 - Ex: '120:30 +60 = '180:30'
* 傳入參數:  string par_TM_STR : 原始時間 , HH:MM ,Ex: 120:30
*                      string par_HR :  累加小時,  
* 傳回參數:  string result
*  Ex:   TIME_ADD('120:30'+'60')='180:30' *  
*/
function TIME_ADD(par_TM_STR, par_HR) {
    // 拆解原始時間
    let [hours, minutes] = par_TM_STR.split(":").map(Number);

    if (checkisnull(hours))
        hours = 0;
    if (checkisnull(minutes))
        minutes = 0;

    // 轉換成總分鐘數
    addMinutes = parseInt(par_HR) * 60;
    let totalMinutes = parseFloat(hours * 60) + parseFloat(minutes) + parseFloat(addMinutes);

    // 計算新的小時與分鐘
    let newHours = Math.floor(totalMinutes / 60);
    let newMinutes = totalMinutes % 60;

    // 格式化輸出 (補零)
    let result = `${newHours}:${newMinutes.toString().padStart(2, "0")}`;
    return result;
}


2>*.js  [結案]鈕

 var Tmp_L_FLYHR = nulltoStr(par_rec.data['L_FLYHR']).toString();                        
 var Tmp_L_FLYHR2 = TIME_ADD(Tmp_L_FLYHR, Tmp_TMFEQ);
 Ext.getCmp("sub_L_FLYHR2").setValue(Tmp_L_FLYHR2);
 var Tmp_TMVAL2 = TIME_ADD(Tmp_L_FLYHR2, Tmp_TMFEQ);
 Ext.getCmp(Tmp_TMVAL_STR).setValue(Tmp_TMVAL2);   



2026年6月4日 星期四

V1060305A – 定更定檢件結案 – label 左靠,置中,右靠

 目的: V1060305A – 定更定檢件結案 – label 左靠,置中,右靠

處理說明: 1>label 設為右靠/左靠/置中
                       style: "text-align: right"; //右靠
                       style: "text-align: center"; //置中
                       style: "text-align: left"; //左靠
                 2>完整 label 元件
                     {
                            xtype: "label", text: par_caption, width: par_l_width, padding: "0 4 0 0",
                             style: par_align,  //文字預設右靠
                      };



2026年6月2日 星期二

V1060302 – 字串欄位日期格式化 – *.JS 將日期格式化成(YYYY/MM/DD) -js Tmp_MM1.toString().padStart(2, "0")

目的: V1060302 – 字串欄位 – *.JS 將日期格式化成(YYYY/MM/DD)

 處理說明: 1>myfunc.js - DATA_ADD
              return Tmp_YYYY1.toString().padStart(4, "0") 
                         + "/" + Tmp_MM1.toString().padStart(2, "0") 
                         + "/" + Tmp_DD1.toString().padStart(2, "0");



1>myfunc.js -function  DATE_ADD
   return   Tmp_YYYY1.toString().padStart(4, "0") 
                + "/" + Tmp_MM1.toString().padStart(2, "0") 
                + "/" + Tmp_DD1.toString().padStart(2, "0");

V1060302 – 實體定更定檢清冊 –實際屆期點=日期+天數 = DATE_ADD(‘2026/12/30’,’天’,’14’); -parseInt -parseFloat

 目的: V1060302 – 實體定更定檢清冊 - [存檔]
           –實際屆期點=日期+天數 = DATE_ADD(‘2026/12/30’,’’,’14’);

處理說明:  1> function DATE_ADD(par_DT, par_UNIT,par_VAL)
                        目的 : 日期字串相加
                        傳入參數:  par_DT:        原始日期
                                           par_UNIT:    A/B/C: 年/月/日 
                                          par_VAL:      累加數值
                         Ex: 
                               2026 / 06 / 01 + 2年 = 2028 / 06 / 01, DATE_ADD("2026/06/01", "A", 2);
                               2026 / 07 / 01 + 6月 = 2027 / 01 / 01, DATE_ADD("2026/07/01", "B", 6);
                               2026 / 07 / 15 + 20天 = 2026 / 08 / 05, DATE_ADD("2026/07/15", "C", 20);

                   2>


1>V1060302.js

Tmp_TMVAL_ = DATE_ADD(Tmp_L_FLYDT, Tmp_TMUNIT, Tmp_TMFEQ);


/*  myfunc.js
 * function DATE_ADD(par_DT, par_UNIT,par_VAL)
 * 傳入參數:  par_DT:        原始日期
 *                      par_UNIT:    A/B/C: 年/月/日 
 *                      par_VAL:      累加數值
日期字串相加-- > 2026 / 06 / 01 + 2年 = 2028 / 06 / 01, DATE_ADD("2026/06/01", "A", 2);
                                 2026 / 07 / 01 + 6月 = 2027 / 01 / 01, DATE_ADD("2026/07/01", "B", 6);
                                 2026 / 07 / 15 + 20天 = 2026 / 08 / 05, DATE_ADD("2026/07/15", "C", 20);
*/
function DATE_ADD(par_DT, par_UNIT,par_VAL) {
    var Tmp_YYYY, Tmp_MM, Tmp_DD;
    var Tmp_YYYY1, Tmp_MM1, Tmp_DD1;
    var Tmp_ADD_YY1, Tmp_ADD_MM1;
    var Tmp_DT = DatetoStr(par_DT, "Y/m/d");    
    Tmp_YYYY = Number(StrExtract(Tmp_DT, 1, "/"));
    Tmp_MM = Number(StrExtract(Tmp_DT, 2, "/"));
    Tmp_DD = Number(StrExtract(Tmp_DT, 3, "/"));
    Tmp_YYYY1 = Tmp_YYYY; Tmp_MM1 = Tmp_MM; Tmp_DD1 = Tmp_DD;
    switch (par_UNIT) {
        case "A":  //年
        {
            Tmp_YYYY1 = Tmp_YYYY + parseInt(par_VAL);
            break;
        }
        case "B":  //月
            {
                Tmp_MM1 = Tmp_MM + parseInt(par_VAL);
                Tmp_ADD_YY1 = Math.trunc((Tmp_MM1) / 12);  //取商數
                Tmp_YYYY1 = Tmp_YYYY + Tmp_ADD_YY1;
                Tmp_MM1 = Math.trunc((Tmp_MM1) % 12);  //取餘數
                break;
            }
        case "C":  //天
            {
                //日期函式 Tmp_DT.setDate( )  ; 日期不對  
                //Tmp_DD1 = Tmp_DD1 + par_VAL;                
                var Tmp_DT = new Date(par_DT);
                var Tmp_DD = Tmp_DT.getDate();
                //console.log("2 Tmp_DT:", Tmp_DT);
                //Tmp_DD 及 par_VAL 必需先轉成數值,才可以累加 , 不然 par_VAL文字, 變成文字相加
                Tmp_DT.setDate(parseInt(Tmp_DD) + parseInt(par_VAL));   
                //console.log("3 Tmp_DT.setDate():", Tmp_DT);
                Tmp_YYYY1 = Tmp_DT.getFullYear();   // 年份 (例如 2026)
                Tmp_MM1 = Tmp_DT.getMonth() + 1; // 月份 (0~11,要 +1 才是正常月份)
                Tmp_DD1 = Tmp_DT.getDate();        // 日期 (1~31)                
                break;
            }
    }// end of switch (par_UNIT)    
    return Tmp_YYYY1.toString() + "/"+Tmp_MM1.toString() +"/"+ Tmp_DD1.toString();
}  // end of  function DATE_ADD(par_DT, par_UNIT,par_VAL) {

2026年5月31日 星期日

*.js 時間相加 , 日期相加 -自訂函式 - TM_ADD DATE_ADD - parseInt - parseFloat

目的: 1>時間字串相加 --> "88:40 " +"01:30"="90:10"          , TM_ADD("88:40 ", "01:30 ")
          2>日期字串相加 --> 2026/06/01 +2年 = 2028/06/01    , DATE_ADD("2026/06/01","A",2) ;
                                             2026/07/01 +6月=2027/01/01      , DATE_ADD("2026/07/01","B",6) ;
                                             2026/07/15 +20天=2026/08/05    , DATE_ADD("2026/07/15","C",20) ;


 
1>時間字串相加  - TM_ADD(par_TM1,par_TM2);

//Ex:  Tmp_AFHR_ = get_TM_ADD(Tmp_AFHR, Tmp_FYTM);

function get_TM_ADD(par_TM1, par_TM2) {
    var Tmp_hh1, Tmp_hh2,Tmp_hh3;
    var Tmp_mm1, Tmp_mm2, Tmp_mm3;
    Tmp_hh1 = Number(StrExtract(par_TM1, 1, ":"));
    Tmp_mm1 = Number(StrExtract(par_TM1, 2, ":"));
    Tmp_hh2 = Number(StrExtract(par_TM2, 1, ":"));
    Tmp_mm2 = Number(StrExtract(par_TM2, 2, ":"));
    Tmp_mm3 = (Tmp_mm1 + Tmp_mm2) % 60;
    Tmp_hh = Math.trunc((Tmp_mm1 + Tmp_mm2) / 60);
    Tmp_hh3 = Tmp_hh1 + Tmp_hh2 + Tmp_hh;
    return Tmp_hh3.toString() + ":" + Tmp_mm3.toString();
}

function TM_ADD(par_TM1, par_TM2) {
    return get_TM_ADD(par_TM1, par_TM2)
}

2>日期字串相加 -  DATE_ADD(par_DT,par_UNIT,par_VAL);
     par_UNIT: A/B/C: 年/月/日

/*
 * function DATE_ADD(par_DT, par_UNIT,par_VAL)
 * 傳入參數:  par_DT:        原始日期
 *                      par_UNIT:    A/B/C: 年/月/日 
 *                      par_VAL:      累加數值
日期字串相加-- > 2026 / 06 / 01 + 2年 = 2028 / 06 / 01, DATE_ADD("2026/06/01", "A", 2);
                                 2026 / 07 / 01 + 6月 = 2027 / 01 / 01, DATE_ADD("2026/07/01", "B", 6);
                                 2026 / 07 / 15 + 20天 = 2026 / 08 / 05, DATE_ADD("2026/07/15", "C", 20);
*/
function DATE_ADD(par_DT, par_UNIT,par_VAL) {
    var Tmp_YYYY, Tmp_MM, Tmp_DD;
    var Tmp_YYYY1, Tmp_MM1, Tmp_DD1;
    var Tmp_ADD_YY1, Tmp_ADD_MM1;
    var Tmp_DT = DatetoStr(par_DT, "Y/m/d");    
    Tmp_YYYY = Number(StrExtract(Tmp_DT, 1, "/"));
    Tmp_MM = Number(StrExtract(Tmp_DT, 2, "/"));
    Tmp_DD = Number(StrExtract(Tmp_DT, 3, "/"));
    Tmp_YYYY1 = Tmp_YYYY; Tmp_MM1 = Tmp_MM; Tmp_DD1 = Tmp_DD;
    switch (par_UNIT) {
        case "A":  //年
        {
            Tmp_YYYY1 = Tmp_YYYY + parseInt(par_VAL);
            break;
        }
        case "B":  //月
            {
                Tmp_MM1 = Tmp_MM + parseInt(par_VAL);
                Tmp_ADD_YY1 = Math.trunc((Tmp_MM1) / 12);  //取商數
                Tmp_YYYY1 = Tmp_YYYY + Tmp_ADD_YY1;
                Tmp_MM1 = Math.trunc((Tmp_MM1) % 12);  //取餘數
                break;
            }
        case "C":  //天
            {
                //日期函式 Tmp_DT.setDate( )  ; 日期不對  
                //Tmp_DD1 = Tmp_DD1 + par_VAL;                
                var Tmp_DT = new Date(par_DT);
                var Tmp_DD = Tmp_DT.getDate();
                //console.log("2 Tmp_DT:", Tmp_DT);
                 //Tmp_DD 及 par_VAL 必需先轉成數值,才可以累加
                Tmp_DT.setDate(parseInt(Tmp_DD) + parseInt(par_VAL));  
                //console.log("3 Tmp_DT.setDate():", Tmp_DT);
                Tmp_YYYY1 = Tmp_DT.getFullYear();   // 年份 (例如 2026)
                Tmp_MM1 = Tmp_DT.getMonth() + 1; // 月份 (0~11,要 +1 才是正常月份)
                Tmp_DD1 = Tmp_DT.getDate();        // 日期 (1~31)                
                break;
            }
    }// end of switch (par_UNIT)    
    return Tmp_YYYY1.toString() + "/"+Tmp_MM1.toString() +"/"+ Tmp_DD1.toString();
}  // end of  function DATE_ADD(par_DT, par_UNIT,par_VAL) {