2026年5月31日 星期日

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

目的: 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: 年/月/日

V1060302 –存檔 –依[屆期基準]欄位值判斷相關欄位是否有輸入值 – switch case 處理

 目的: V1060302 –存檔 [屆期基準]欄位值判斷相關欄位是否有輸入值 – switch case 處理

處理說明:   1> switch case 
                       switch (Tmp_TMBASE_) {
                        case "A":  //A:總行小時
                                       {     :
                                               Tmp_isok=false;
                                               break;  //必需 break ; 才不會繼續往下執行
                                       }

                 2> Ext.getCmp('btn_save').checkFormValue = function () {
                           //若欄位值有誤, return false;
                           if (!Tmp_isok)
                               return false;
                           若欄位值檢核 ok , return true;
                       }


1>*.js
 //[存檔].檢查目前欄位值..
    Ext.getCmp('btn_save').checkFormValue = function () {
        // [序號管制件(IS_SER)]='Y',則 [序號(SERNO)] 不可空白
        var Tmp_IS_SER = Ext.getCmp("IS_SER_").getValue();
        if (Tmp_IS_SER == "Y" ) {
            var Tmp_SERNO = Ext.getCmp("SERNO").getValue();
            if (checkisnull(Tmp_SERNO)) {
                var Tmp_Str = "序號管制件<br>"
                    + "序號不可空白<br>"
                    + "敬請檢核!!";
                mywarnalert(Tmp_Str);
                return false;
            }
        }  //end of if (Tmp_IS_SER == true) {
        //檢核 [屆期基準(TMBASE1)]/[屆期基準(TMBASE2)]  檢核 對應的欄位值 是否有輸入
        //若 [是否多重屆期基準(ISMULTI)]='Y' , 才檢核 [屆期基準(TMBASE2)]相關欄位值是否有輸入
        var Tmp_TMBASE__ = "";
        var Tmp_TMBASE_ = "";
        var Tmp_IS_MULTI = "";
        var Tmp_isok = true;
        for (var i = 1; i <= 2; i++) {

            //依 [屆期基準(TMBASE1)]  檢核 對應的欄位值 是否有輸入
            // [A:總飛行小時],則 [上次總飛行小時(L_FLYHR)] 不可空白
            if (i == 1) {
                Tmp_TMBASE__ = Ext.getCmp("TMBASE1__").getValue();
                Tmp_TMBASE_ = Ext.getCmp("TMBASE1_").getValue();
            }
            else {  //i==2
                Tmp_IS_MULTI = Ext.getCmp("IS_MULTI_").getValue();
                if (Tmp_IS_MULTI != "Y")
                    break;
                Tmp_TMBASE__ = Ext.getCmp("TMBASE2__").getValue();
                Tmp_TMBASE_ = Ext.getCmp("TMBASE2_").getValue();
            }            
            switch (Tmp_TMBASE_) {
                case "A":  //A:總行小時
                    {
                        var Tmp_L_FLYHR = Ext.getCmp("L_FLYHR").getValue();
                        if (checkisnull(Tmp_L_FLYHR)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[上次總飛行小時(L_FLYHR)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "B":  //B:總飛行架次
                    {
                        var Tmp_L_FLYAC = Ext.getCmp("L_FLYAC").getValue();
                        if (checkisnull(Tmp_L_FLYAC)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[上次總飛行架次(L_FLYAC)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "C":  //C:上次APU操作小時(L_APUHR)
                    {
                        var Tmp_L_APUHR = Ext.getCmp("L_APUHR").getValue();
                        if (checkisnull(Tmp_L_APUHR)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[上次APU操作小時(L_APUHR)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "D":  //D:上次APU操作次數(L_APUAC)
                    {
                        var Tmp_L_APUAC = Ext.getCmp("L_APUAC").getValue();
                        if (checkisnull(Tmp_L_APUAC)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[上次APU操作小時(L_APUAC)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "E":  //E:上次定更定檢日(L_CHKCHG_DT)
                    {
                        var Tmp_L_CHKCHG_DT = Ext.getCmp("L_CHKCHG_DT").getValue();
                        if (checkisnull(Tmp_L_CHKCHG_DT)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[上次定更定檢日(L_CHKCHG_DT)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "F":  //F:上次渦輪啟動次數(L_TURBOAC)
                    {
                        var Tmp_L_TURBOAC = Ext.getCmp("L_TURBOAC").getValue();
                        if (checkisnull(Tmp_L_TURBOAC)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[上次渦輪啟動次數(L_TURBOAC)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "G":  //G:上次發動機操作小時(L_ENGHR)
                    {
                        var Tmp_L_ENGHR = Ext.getCmp("L_ENGHR").getValue();
                        if (checkisnull(Tmp_L_ENGHR)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[上次發動機操作小時(L_ENGHR)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "H":  //H:上次定更定檢日(L_CHKCHG_DT)
                    {
                        var Tmp_L_CHKCHG_DT = Ext.getCmp("L_CHKCHG_DT").getValue();
                        if (checkisnull(Tmp_L_CHKCHG_DT)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[上次定更定檢日(L_CHKCHG_DT)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "I":  //I:安裝日(INS_DT)
                    {
                        var Tmp_INS_DT = Ext.getCmp("INS_DT").getValue();
                        if (checkisnull(Tmp_INS_DT)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[安裝日(INS_DT)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "J":  //J:屆期日(TMVAL1)
                    {
                        var Tmp_TMVAL = "";
                        if (i == 1)
                            Tmp_TMVAL = Ext.getCmp("TMVAL1").getValue();
                        else
                            Tmp_TMVAL = Ext.getCmp("TMVAL2").getValue();
                        if (checkisnull(Tmp_TMVAL)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[實體屆期點(TMVAL1/2)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "K":  //K:製造日(MK_DT)
                    {
                        var Tmp_MK_DT = Ext.getCmp("MK_DT").getValue();
                        if (checkisnull(Tmp_MK_DT)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[製造日(MK_DT)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "L":  //L:庫存日(STK_DT)
                    {
                        var Tmp_STK_DT = Ext.getCmp("STK_DT").getValue();
                        if (checkisnull(Tmp_STK_DT)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[庫存日(STK_DT)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "N":  //N:上次TYPE_I次數(L_TYPE_I)
                    {
                        var Tmp_L_TYPE_I = Ext.getCmp("L_TYPE_I").getValue();
                        if (checkisnull(Tmp_L_TYPE_I)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[上次TYPE_I次數(L_TYPE_I)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
                case "O":  //O:上次TAC次數(L_TAC)
                    {
                        var Tmp_L_TAC = Ext.getCmp("L_TAC").getValue();
                        if (checkisnull(Tmp_L_TAC)) {
                            var Tmp_Str = "屆期基準(" + Tmp_TMBASE__ + ")<br>"
                                + "[上次TAC次數(L_TAC)]不可空白<br>"
                                + "敬請檢核!!";
                            mywarnalert(Tmp_Str);
                            Tmp_isok = false;                            
                        }
                        break;  //若有符合條件,不再往下執行
                    }
            }  // end of  switch (Tmp_TMBASE1) {
            if (!Tmp_isok)
                return false;
        }  //end of for (var i=1;i<=2;i++)
        return true;
    };

 

2026年5月27日 星期三

V1060302-實體定更定檢清單-匯出 –後端錯誤時,出現黑畫面 --> 不用 Response.End(); -->改用 CompleteRequest()

 目的: V1060302-實體定更定檢清單-匯出 –後端錯誤時,出現黑畫面 
           --> Exception :不用 Response.End();  -->改用 CompleteRequest()
           --> 寫入檔案  : 用 Response.End(); 不用 CompleteRequest();

處理說明:  1> catch (e:Message){                          
                        不可用 HttpContext.Current.Response.End();               
                        à改用HttpContext.Current.ApplicationInstance.CompleteRequest();
                       }
                 2> 寫入檔案時,要用 Response.End();
                       不可用 HttpContext.Current.ApplicationInstance.CompleteRequest();   
                      //檔案會無法開啟
                       
                HttpContext.Current.Response.Cookies.Add(MyCookie);
                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode(Tmp_FName1, System.Text.Encoding.UTF8) + "\"");
                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
                HttpContext.Current.Response.BinaryWrite(mstream.ToArray());
                HttpContext.Current.Response.End();
                HttpContext.Current.ApplicationInstance.CompleteRequest();   //檔案會無法開啟



1>*.cs
          try{
                wk.SaveToStream(mstream, FileFormat.Version2007);
                wk.SaveToFile(Tmp_pFName1, FileFormat.Version2007);
                Tmp_Str = "已匯出完成!!(" + row.ToString() + "筆)<br>"
                            + "檔案名稱(" + Tmp_FName1 + ")";
                MyCookie = new HttpCookie("Rtn_Msg", HttpUtility.UrlEncode(Tmp_Str));
                HttpContext.Current.Response.Cookies.Add(MyCookie);
                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode(Tmp_FName1, System.Text.Encoding.UTF8) + "\"");
                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
                HttpContext.Current.Response.BinaryWrite(mstream.ToArray());
                HttpContext.Current.Response.End();
                HttpContext.Current.ApplicationInstance.CompleteRequest();   //檔案會無法開啟

         
}         catch (Exception e)
            {
                //Console.WriteLine(e);
                Tmp_Str = "錯誤:匯出檔案失敗,訊息如下:<br>"
                               + e.Message;
                MyCookie = new HttpCookie("Rtn_Msg", HttpUtility.UrlEncode(Tmp_Str));
                HttpContext.Current.Response.Cookies.Add(MyCookie);
                //HttpContext.Current.Response.End();                
                HttpContext.Current.ApplicationInstance.CompleteRequest();
            }


2>*.js
 Ext.getCmp('s_form').submit({
        //Ext.Ajax.request({
        url: '../../api/V1060302CAPI/XLSOUT',
        method: 'POST',
        async: false,
        standardSubmit: true, //若要傳送檔案至前端, standardSubmit必需設為 true  
        params: np,
    });
    //顯示結果訊息..

    var mask = new Ext.LoadMask(Ext.getBody(), {
        msg: '處理中,請稍待...'
    });

    mask.show();//使用 mask 需手動呼叫show() 方法下
    //每1秒檢核一次,是否已完成, 若已完成,則不再檢核
    var timer = setInterval(function () {
        var r = r_cookies('Rtn_Msg');  //Exception 時, 若用 Response.End() , 則會抓不到 Cookie
        //console.log("r_cookies=", r);
        if (!checkisnull(r)) {
            mysuccessalert(r);
            clearInterval(timer);
            mask.hide();
            timer = null;
        }
    }, 1000);  //1000ms = 1sec

V1060302-實體定更定檢清單- [編輯][存檔]後, Query的高度變大 - Query高度亂掉 - CheckBox

 目的: V1060302-實體定更定檢清單- [編輯][存檔], Query的高度變大
                      如何處理

處理說明:  1> Query的高度設為固定
                        var Query = new Ext.FormPanel({
                                              id: 's_form',
                                             height:100,
                                             layout: { type: 'hbox', align: 'stretch' },
                  2> 按[存檔]後,重新顯示資料                      
                       Ext.getCmp('btn_save').setFormValue = function () {
                               Ext.getCmp('btn_Show').fireHandler();        
                               return true;        
                         };


1>*.js

  //篩選條件畫面
    var Query = new Ext.FormPanel({
        id: 's_form',
        layout: { type: 'hbox', align: 'stretch' },
        fieldDefaults: { labelAlign: 'right' },
        defaults: { margin: { top: 3 } },
        height: 100,
        items: [
            {
                xtype: 'panel', id: 'panel1', layout: { type: 'hbox', align: 'stretch' }, flex: 14, border: 0,
                items: [
                    {
                        xtype: 'panel', id: 'panel11', layout: { type: 'vbox', align: 'stretch' }, flex: 25, border: 0,
                        items: [cmp_PROJID, cmp_TYPE,],
                    },  // end of panel11
                    {


//按存檔後,重新顯示資料
   Ext.getCmp('btn_save').setFormValue = function () {
        Ext.getCmp('btn_Show').fireHandler();
        return true;
    };

V1060302-實體定更定檢清單 – 編輯欄位(AMM_CHKCHG_ASN)+CaluField(AMM_CHKCHG) -[存檔]錯誤

目的:V1060302-實體定更定檢清單 – 單檔維護 - 編輯欄位 - SQL多個Table
        (AMM_CHKCHG_ASN)+CaluField(AMM_CHKCHG)
        --> SQL 不用 CaluField, SQL用FROM AMM_CHKCHG_ASN A ,AMM_CHKCHG B
        -->[編輯][存檔]時,更新的欄位不正確(Ex: AMM_CHKCHG.PTMVAL1,PTMVAL2)

處理說明:  1>Template.SQL 必需單一Table(AMM_CHKCHG_ASN), 
                       將參考顯示欄位(AMM_CHKCHG)設為 CaluField   
                   2>若 SQL 多個 Table(AMM_CHKCHG_ASN ,AMM_CHKCHG ) 時,
                        當[存檔]時,抓 Update 欄位會有問題







2026年5月26日 星期二

V1060302 –實體定更定檢清單 - Item 挑選後 – change event 沒觸發

目的: V1060302 –實體定更定檢清單 - Item 挑選後 – change event 沒觸發
          --> Item挑選後,顯示該Item的定更定檢資料


處理說明:  1>[Item] 挑選欄位值, 挑選後未觸發 change event 

                        -->   var win = EditPickx('ITEM', '../api/V1060302API/get_ITEMPick', ['ITEM'],            
                                                ['ITEM'], J_pickstore_ITEM, J_pickcolumns_ITEM,true,false);
                                 win.show();
                        --> EditPickx 預設會 Disable change event 
                  2>呼叫 EditPickx 時,將 isSuspendEvent 設為 false
                      --> 不 Disable change event 
                        

1>*.js
//ITEM
Ext.getCmp('btn_ITEM').on("click", function () {
var win = EditPickx('ITEM', '../api/V1060302API/get_ITEMPick', ['ITEM'], ['ITEM'],  
                                  J_pickstore_ITEM, J_pickcolumns_ITEM,true,false);
win.show();
});
--> 將  EditPickx 的 isSuspendEvent 設為 false , 不 suspend change event 


 var Tmp_ITEM = Ext.getCmp("ITEM");
    console.log("Tmp_ITEM:", Tmp_ITEM);
    //若change 沒觸發 ,必需將   EditPickx 的 isSuspendEvent =false,
    Ext.getCmp("ITEM").on('change', function (me, newValue, oldValue, eOpts) {
    //Ext.getCmp("ITEM").on('blur', function (me, eOpts) {
        var Tmp_PROJID = Ext.getCmp("PROJID").getValue();
        var Tmp_TYPE = Ext.getCmp("TYPE").getValue();
        var Tmp_ITEM = Ext.getCmp("ITEM").getValue();
        if ((!checkisnull(Tmp_PROJID)) && (!checkisnull(Tmp_TYPE)) && (!checkisnull(Tmp_ITEM)))
            Show_AMM_CHKCHG_Data(Tmp_PROJID, Tmp_TYPE, Tmp_ITEM);
    });

2026年5月25日 星期一

V1060301- 專案定更定檢件清單 - 單檔維護(新增/修改/刪除/挎貝) - 下載匯入格式/匯入/匯出

 目的: V1060301- 專案定更定檢件清單 - 單檔維護(新增/修改/刪除/挎貝) - 匯入/匯出

處理說明: 1>單檔維護(新增/修改/刪除/挎貝)
                       var S_DB = Ext.create('S_DB', {
                                              apiName: 'V1060301'
                                          });
                        呼叫 ..\V1060301API\Update() , Insert()
                 2>編輯欄位挑選:
                     {
xtype: "fieldcontainer", fieldLabel: "分類", labelWidth: 160, layout: "hbox", items: [
{ id: "TYPE", name: "TYPE", xtype: "textfield", width: 30, padding: "0 4 0 0", maxLength: 1 },
{ id: "TYPE_", name: "TYPE_", xtype: "textfield", width: 60, fieldCls: "calculate", readOnly: true, padding: "0 4 0 0" },
{
  id: "btn_TYPE", name: "btn_TYPE", xtype: "button", text: "...",
  //handler: function () {
// var win = EditPickx('挑選分類', '../api/V1060301API/get_TYPEPick',
// ['TYPE', 'DESCPT'], ['TYPE', 'TYPE_'],
// J_pickstore_TYPE, J_pickcolumns_TYPE);
// win.show();
//}
}
], labelStyle: "font-size:11pt;"
}, 

    //分類 - on 不可用 handler -屬性名稱, click 才是event 名稱
    Ext.getCmp('btn_TYPE').on("click", function () {
        var win = EditPickx('分類', '../api/V1060301API/get_TYPEPick', ['TYPE', 'DESCPT'], ['TYPE', 'TYPE_'], J_pickstore_TYPE, J_pickcolumns_TYPE);
        win.show();
    });

               3>下載匯入格式/匯入/匯出 
   {  // checkbox 方式 - 分頁勾選
            xtype: 'button', text: '下載匯入格式', id: 'DownloadBtn_1',
            listeners: {
                click: function () {
                    document.location = "../api/VUTLAPI/dnloadSS_File?FNAME=V1060301_專案定更定檢清單_匯入.xlsx";
                }
            }
        },
        {  //以 checkbox 分頁勾選方式 , 由 cbxArr1()  至後端取得資料匯入 
            xtype: 'button', text: '匯入', id: 'XlsInBtn_1',
            listeners: {
                click: function () {                    
                    CALL_V1060301B();
                }
            }
        },




1>*.js

{  // checkbox 方式 - 分頁勾選
            xtype: 'button', text: '下載匯入格式', id: 'DownloadBtn_1',
            listeners: {
                click: function () {
                    //DownloadBtn_1_click();
                    document.location = "../api/VUTLAPI/dnloadSS_File?FNAME=V1060301_專案定更定檢清單_匯入.xlsx";
                }
            }
        },
        {  //以 checkbox 分頁勾選方式 , 由 cbxArr1()  至後端取得資料匯入 
            xtype: 'button', text: '匯入', id: 'XlsInBtn_1',
            listeners: {
                click: function () {                    
                    //XlsInBtn_1_click();                     
                    CALL_V1060301B();
                }
            }
        },
        {  //以 checkbox 分頁勾選方式 , 由 cbxArr1()  至後端取得資料匯出 
            xtype: 'button', text: '匯出', id: 'XlsOutBtn_1',
            listeners: {
                click: function () {                    
                    Ext.Ajax.request({
                        url: '../api/V1060301API/getGridData_M?par_paging=false',
                        method: 'POST',
                        params: { all: 1 },
                        async: false, //將非同步功能關閉
                        failure: function (response, opts) {
                        },
                        success: function (response, opts) {
                            let Tmp_DataAry1 = [];
                            var obj = Ext.decode(response.responseText);
                            obj.T1.forEach(function (item, i) {
                                Tmp_DataAry1.push(item);
                            });
                            CALL_V1060301C(Tmp_DataAry1); //排程資料匯出
                        }
                    });
                }
            }
        },
        {  //以 checkbox 分頁勾選方式 , 由 cbxArr1()  至後端取得資料匯出 
            xtype: 'button', text: '撤銷', id: 'RemoveBtn_1',
            listeners: {
                click: function () {
                    var Tmp_Str;
                    var Tmp_CHKCHG_NM;
                    var cur_recs = Ext.getCmp('grid_Single').getSelectionModel().getSelection();
                    var cur_rec = null;
                    if (cur_recs.length == 0)
                    {
                        Tmp_Str = "請先選擇要撤銷的定更定檢項目!!";
                        myalert(Tmp_Str);
                    }
                    else {
                        console.log("cur_recs:", cur_recs);
                        cur_rec = cur_recs[0];
                        console.log("cur_rec:", cur_rec);
                        Tmp_CHKCHG_NM = nulltoStr(cur_rec.data['CHKCHG_NM']).toString();
                        Tmp_Str = "確定將本定更定檢項目(" + Tmp_CHKCHG_NM + ")\r\n"
                            + "撤銷嗎?\r\n";
                        var id = confirm(Tmp_Str);
                        if (id) {
                            CALL_V1060301D();
                        };
                    }
                    
                }
            }
        },