2025年9月26日 星期五

V20108 – 工作程序資源設定 – 人員 & 裝備 – Panel加入自訂 Grid - tabBar 隱藏/顯示

 目的: V20108 – 工作程序資源設定 人員 & 裝備 – Panel加入自訂 Grid

處理說明:1>產生 TMGrid
var grid_D11 = Ext.create('TMGrid', {
        grid_id: 'grid_D11',
        columns: J_columns_D11,
        autoScroll: true,
        flex: 1,
        store: Ext.create('gridstore', { model: J_gridmodel_D11 }),
    });
                 2>Panel 加入 自訂Grid
                     Ext.getCmp("Panel_D11").add(grid_D11);
                3>Grid .分頁bar 隱藏
                      Ext.getCmp('grid_D11_ptb').hide();
                4>tabBar 全部隱藏
                     Ext.getCmp("tab_D").tabBar.height = 0;
                     Ext.getCmp("tab_D").tabBar.hidden = true; 
                5>tabBar 部份不顯示 - Template tab_D 才有setTabVisible 函式, 一般tabPanel無該函式
                    Ext.getCmp("tab_D").setTabVisible(0, false);
                    Ext.getCmp("tab_D").setTabVisible(1, false);
                    Ext.getCmp("tab_D").setActiveTab(2);      
               6>一般 tabPanel 隱藏 tabBar
                  Ext.getCmp("tabPanel_D1").getTabBar().getComponent(0).hide();  // tabbar 不顯示
                  Ext.getCmp("tabPanel_D2").getTabBar().getComponent(0).hide();






1>*.js
  //2025/09/24 隱藏原本 Detail  & 加入 [人員Panel) *3    
    cmp_Panel_D = get_cmp_panel1(300, 100, "Panel_D");
    cmp_Panel_D.title = "Panel_D";
    cmp_tabPanel_D1 = get_cmp_tabpanel1("人員挑選");    
    cmp_tabPanel_D2 = get_cmp_tabpanel1("裝備挑選");    
    cmp_Panel_D.layout = { type: 'hbox', align: 'stretch' };
    cmp_Panel_D.items.push(cmp_tabPanel_D1, cmp_tabPanel_D2);
    cmp_tabPanel_D1.id = "tabPanel_D1";
    cmp_tabPanel_D2.id = "tabPanel_D2";

    //人員挑選
    cmp_Panel_D1 = get_cmp_panel1(300, 100, "Panel_D1"); //人員挑選
    cmp_Panel_D1.layout = { type: 'vbox', align: 'stretch' };
    cmp_Panel_D11 = get_cmp_panel1(300, 100, "Panel_D11");
    cmp_Panel_D11.id = 'Panel_D11';
    cmp_Panel_D11.layout = 'fit';
    cmp_Panel_D12 = get_cmp_panel1(300, 30, "Panel_D12");
    cmp_Panel_D13 = get_cmp_panel1(300, 100, "Panel_D13");
    cmp_tabPanel_D1.items.push(cmp_Panel_D1);
    cmp_Panel_D1.items.push(cmp_Panel_D11, cmp_Panel_D12, cmp_Panel_D13);
    //cmp_tabPanel_D1.items[0].items.push(cmp_Panel_D11, cmp_Panel_D12, cmp_Panel_D13);
    console.log("cmp_tabPanel_D1:", cmp_tabPanel_D1);
    console.log("cmp_tabPanel_D1.items[0]:", cmp_tabPanel_D1.items[0]);
    //cmp_tabPanel_D1.items[0].tabBar.height = 0;
    //cmp_tabPanel_D1.items[0].tabBar.hidden = true;
    console.log("Ext.getCmp(tab_D):", Ext.getCmp("tab_D"));
    console.log("Ext.getCmp(tabPanel_D1)_0:", Ext.getCmp("tabPanel_D1"));
    //Ext.getCmp("tabPanel_D1").setTabVisible(0, false);
    //Ext.getCmp("tabPanel_D2").setTabVisible(1, false);

    
    cmp_Panel_D.border = 1;
    cmp_Panel_D11.border = 1;
    cmp_Panel_D12.border = 1;
    cmp_Panel_D13.border = 1;
    //Ext.getCmp("tab_D").tabBar = { height: 0, hidden: true }; // 可選,直接隱藏 tabBar    
    Ext.getCmp("tab_D").tabBar.height = 0;
    Ext.getCmp("tab_D").tabBar.hidden = true;
    Ext.getCmp("tab_D").add(cmp_Panel_D);
    
    //Ext.getCmp("tab_D").hide();
    //2025/09/25 原本Detail 的Tab 設為隱藏
    //Template tab_D 才有 setTabVisible 函式,一般tabPanel無該函式
    Ext.getCmp("tab_D").setTabVisible(0, false);  
    Ext.getCmp("tab_D").setTabVisible(1, false);
    Ext.getCmp("tab_D").setActiveTab(2);

    console.log("grid_D11  - STEP0");
    //加入 grid_Dxx
    //var grid_D11 = Ext.create('grid_D', {
    //    grid_id: 'grid_D11',        
    //    columns: J_columns_D11,
    //    //title: '子步序說明',
    //    store: Ext.create('gridstore_D', { model: J_gridmodel_D11 }),
    //    //form_items: J_formFields_D1,
    //    form_id: 'myform_D11'
    //});

    var grid_D11 = Ext.create('TMGrid', {
        grid_id: 'grid_D11',
        columns: J_columns_D11,
        autoScroll: true,
        flex: 1,
        store: Ext.create('gridstore', { model: J_gridmodel_D11 }),
    });

    console.log("0 Ext.getCmp(Panel_D11):", Ext.getCmp("Panel_D11"));
    //cmp_Panel_D11.add(grid_D11);
    Ext.getCmp("Panel_D11").add(grid_D11);
    Ext.getCmp('grid_D11_ptb').hide();
    
//一般 tabPanel 隱藏 tabBar
Ext.getCmp("tabPanel_D1").getTabBar().getComponent(0).hide();  // tabbar 不顯示
Ext.getCmp("tabPanel_D2").getTabBar().getComponent(0).hide();


2025年9月24日 星期三

V20108 – 工作程序資源設定 – 客製化MD畫面- 樣板.Detail Grid畫面 - 隱藏不用,換成客製化Detail畫面

 目的: V20108 – 工作程序資源設定 客製化MD畫面- Detail非標準的MD畫面

處理說明: 1>原本的樣板.Detail畫面.隱藏不用
                      Ext.getCmp("tab_D").setTabVisible(0, false);
                      Ext.getCmp("tab_D").setTabVisible(1, false);
                      Ext.getCmp("tab_D").setActiveTab(2);
                   2>加入客製化 Detail畫面 - 
                        cmp_Panel_D = get_cmp_panel1(300, 100, "Panel_D");
                        cmp_tabPanel_D1 = get_cmp_tabpanel1("人員挑選");    
                        cmp_tabPanel_D2 = get_cmp_tabpanel1("裝備挑選");    
                        cmp_Panel_D.layout = { type: 'hbox', align: 'stretch' };
                        cmp_Panel_D.items.push(cmp_tabPanel_D1, cmp_tabPanel_D2);
                        Ext.getCmp("tab_D").add(cmp_Panel_D);
                        cmp_tabPanel_D1.id = "tabPanel_D1";
                        cmp_tabPanel_D2.id = "tabPanel_D2";
                    3>設定TabBar.隱藏
                         Ext.getCmp("tab_D").tabBar.height = 0;
                         Ext.getCmp("tab_D").tabBar.hidden = true;
                   4>畫面顯示後, Tab不顯示
                       Ext.getCmp("tabPanel_D1").getTabBar().getComponent(0).hide();
                   5>畫面顯示後,Tab隱藏
                       listeners: {
                            afterrender:    function () {
                                    Ext.getCmp("tabPanel_D1").getTabBar().getComponent(0).hide();
                         }};


1>*.js
    cmp_Panel_D = get_cmp_panel1(300, 100, "Panel_D");
    cmp_tabPanel_D1 = get_cmp_tabpanel1("人員挑選");    
    cmp_tabPanel_D2 = get_cmp_tabpanel1("裝備挑選");    
    cmp_Panel_D.layout = { type: 'hbox', align: 'stretch' };
    cmp_Panel_D.items.push(cmp_tabPanel_D1, cmp_tabPanel_D2);
    cmp_tabPanel_D1.id = "tabPanel_D1";
    cmp_tabPanel_D2.id = "tabPanel_D2";

    //人員挑選
    cmp_Panel_D1 = get_cmp_panel1(300, 100, "Panel_D1"); //人員挑選
    cmp_Panel_D1.layout = { type: 'vbox', align: 'stretch' };
    cmp_Panel_D11 = get_cmp_panel1(300, 100, "Panel_D11");
    cmp_Panel_D12 = get_cmp_panel1(300, 30, "Panel_D12");
    cmp_Panel_D13 = get_cmp_panel1(300, 100, "Panel_D13");
    cmp_tabPanel_D1.items.push(cmp_Panel_D1);
    cmp_tabPanel_D1.items[0].items.push(cmp_Panel_D11, cmp_Panel_D12, cmp_Panel_D13);
    
    cmp_Panel_D.border = 1;
    cmp_Panel_D11.border = 1;
    cmp_Panel_D12.border = 1;
    cmp_Panel_D13.border = 1;
    Ext.getCmp("tab_D").tabBar.height = 0;
    Ext.getCmp("tab_D").tabBar.hidden = true;
    Ext.getCmp("tab_D").add(cmp_Panel_D);
    
    Ext.getCmp("tab_D").setTabVisible(0, false);
    Ext.getCmp("tab_D").setTabVisible(1, false);
    Ext.getCmp("tab_D").setActiveTab(2);

2>*.js
  var viewport = Ext.create('Ext.container.Viewport', {
        layout: 'border',
        items: [{
            region: 'center',
            layout: 'fit',
            autoScroll: true,
            flex: 2,
            border: false,
            items: [TMMDViewEdit]
        }],
        listeners: {
            afterrender:    function () {
                Ext.getCmp("tabPanel_D1").getTabBar().getComponent(0).hide();
                console.log("Ext.getCmp(tabPanel_D1)_2:", Ext.getCmp("tabPanel_D1"));
            }
        }
    });

2025年9月3日 星期三

V20305L-[上下層同時提料需求申請]鈕- PK_LIST –勾選資料傳至後端 - 全部匯出 - Email附檔 -New

 目的: V20305L-[上下層同時提料需求申請]

            - PK_LIST –勾選資料傳至後端-全部匯出- Email附檔

處理說明:

              1>勾選資料傳至後端
          for (var i = 0; i < CHK_PK_OBJ.PK_LIST.length; i++) {
                cur_rec = CHK_PK_OBJ.ALL_LIST[i];
                 Tmp_DataAry1.push(cur_rec);
           }

          let Tmp_DataString1 = JSON.stringify(Tmp_DataAry1);
          var np= {};
          np["DataString1"] = Tmp_DataString1;
           Tmp_url = '../../api/V20305LAPI/CHECK_EXIST_UPDOWN_LCN';
           Tmp_RtnStr = getUrlStr(Tmp_url, np, "檢核 [交修單號] 是否存存上下層提料件號");

              2>全部資料傳至後端
           for (var i = 0; i < Tmp_Grid.store.getCount(); i++) {
                 cur_rec = Tmp_Grid.store.getAt(i);
                 console.log("cur_rec :", cur_rec);
                 console.log("cur_rec.data :", cur_rec.data);
                 if (!(JSON.stringify(cur_rec.data) === '{}')) {
                        Tmp_DataAry2.push(cur_rec.data);
            }
           let Tmp_DataString2 = JSON.stringify(Tmp_DataAry2);  //子畫面所有資料

              3>Email 附檔 - 套表
                      套表檔案名稱(*.xlsx)和匯出檔案名稱(*_yyyyMMdd.xlsx)不可相同,
                       否則會Error      



1>*.js
1>>勾選資料傳至後端
var cur_rec;
let Tmp_DataAry1 = [];
var Tmp_DTSOR,Tmp_AMMNO;
var Tmp_Str;
for (var i = 0; i < CHK_PK_OBJ.PK_LIST.length; i++) {
     cur_rec = CHK_PK_OBJ.ALL_LIST[i];
     Tmp_AMMNO = cur_rec.AMMNO.toString();
     Tmp_DTSOR = cur_rec.DTSOR.toString();
     if (!(JSON.stringify(cur_rec) === '{}')) {
             Tmp_DataAry1.push(cur_rec);
}
}
//主畫面勾選資料
let Tmp_DataString1 = JSON.stringify(Tmp_DataAry1);
var np= {};
np["DataString1"] = Tmp_DataString1;

//新增 AMM_TLSAR & AMM_AR
//STEP2: 若 AMM_TLSAR & AMM_AR of FMNO 不存在, 則新增該檔案資料(AMM_TLSAR, AMM_AR)
Tmp_url = '../../api/V20305LAPI/CHECK_EXIST_UPDOWN_LCN';
Tmp_RtnStr = getUrlStr(Tmp_url, np, "檢核 [交修單號] 是否存存上下層提料件號");
if (!checkRtnOK(Tmp_RtnStr)) {
mywarnalert(Tmp_RtnStr);
return;
}


2>>全部資料傳至後端
function V20305L_OK() {
//STEP1 : 更新[上下層需求說明(AMM_UOCD.UDRQSN)]
var Tmp_Grid = Ext.getCmp('sub_Grid');
var cur_rec;
let Tmp_DataAry2 = []; //目前子畫面的資料,傳至後端
var Tmp_Str = "";
var Tmp_RtnMsg = "";
if (Tmp_Grid.store.length == 0) {
mywarnalert("目前無[上下層同時提料]資料,無法確認送出");
return;
}
//取得目前子畫面所有資料
for (var i = 0; i < Tmp_Grid.store.getCount(); i++) {
cur_rec = Tmp_Grid.store.getAt(i);
console.log("cur_rec :", cur_rec);
console.log("cur_rec.data :", cur_rec.data);
if (!(JSON.stringify(cur_rec.data) === '{}')) {
Tmp_DataAry2.push(cur_rec.data);
}
}
let Tmp_DataString2 = JSON.stringify(Tmp_DataAry2); //子畫面所有資料


var np = {};
np["DataString1"] = Tmp_DataString1; //主畫面勾選皫資料
np["UDRQSN"] = Ext.getCmp("sub_UPDOWN_DESCP").getValue();
np["STAUOCD"] = Ext.getCmp("s_STAUOCD").getValue(); //主畫面的[是否提料] - 過濾修件
//np["DataString1"] = Tmp_DataString1;
var Tmp_url = "../../api/V20305LAPI/UPDATE_UDRQSN";
Tmp_RtnMsg = getUrlStr(Tmp_url, np, "更新[上下層需求說明(AMM_UOCD.UDRQSN)]欄位值");
if (!checkRtnOK(Tmp_RtnMsg)) {
myalert(Tmp_RtnMsg);
return;
} // end of SelAllBtn_click


3>>Email - 套表
           string Tmp_FName = "V20305_上下層同時提料申請清單.xlsx";      //套表的檔案名稱 : 
            string documentPath = HttpContext.Current.Server.MapPath("~") + "document\\";
            string pathFName = documentPath + "V20305_上下層同時提料申請清單_" +DateTime.Now.ToString("yyyyMMdd") + ".xlsx";
            FileStream fs = null;
            Workbook wk = null;
            fs = myfunc.get_SS_FILES(Tmp_FName);
            wk = new Workbook();
            wk.LoadFromStream(fs);
            Worksheet ws1 = wk.Worksheets[0];//獲取第一個工作表            
            try
           {
                
                ws1.AllocatedRange.AutoFitColumns();
                wk.SaveToStream(stream, FileFormat.Version2007); 
                 wk.SaveToFile(pathFName, FileFormat.Version2007);

2025年9月1日 星期一

V20305M – [匯入PDM BOM檔]鈕 - Panel隱藏

 目的: V20305M – [匯入PDM BOM] - Panel隱藏

處理說明: 1>var cmp_sub_panel1 = get_cmp_panel1(200);
                                             cmp_sub_panel1.id = "sub_panel1";
                            2>Panel隱藏
                                    Ext.getCmp("sub_panel1").hide();


1>*.js
 var cmp_sub_panel1 = get_cmp_panel1(200);
    cmp_sub_panel1.id = "sub_panel1";
    var cmp_sub_PN = get_cmp_txt1('件號', 'sub_PN', 110, 120);
    var cmp_sub_EONO = get_cmp_txt1('ECNO', 'sub_EONO', 110, 100);
    var cmp_sub_CDCODE = get_cmp_txt1('情況碼', 'sub_CDCODE', 110, 100);
    cmp_sub_panel1.items.push(cmp_sub_PN, cmp_sub_EONO, cmp_sub_CDCODE);

win.show();
Ext.getCmp("sub_panel1").hide();