2026年2月12日 星期四

V20108 – [匯出(人力資源)]鈕 – 設定 CELL 欄位邊框 - 水平置中/靠右

 目的: V20108 – [匯出(人力資源)] 設定 CELL 欄位邊框 & 水平靠右

處理說明: 1>設定欄位邊框
                      //cell.邊框 = 細線 & 黑色
                         CellRange cell = ws.Range[myfunc.GetExcelPos(k, cur_row)];
                         cell.Borders.LineStyle = LineStyleType.Thin;
                         cell.Borders.Color = Color.Black;
                     //cell.斜線 不顯示
                          cell.Borders[BordersLineType.DiagonalDown].LineStyle = LineStyleType.None; 
                          cell.Borders[BordersLineType.DiagonalUp].LineStyle = LineStyleType.None;
                 2>設定欄位右靠
                    ws.Range[myfunc.GetExcelPos(0, cur_row)].Text = "□";  //EMPID
ws.Range[myfunc.GetExcelPos(0, cur_row)].Style.HorizontalAlignment = HorizontalAlignType.Right;    //水平靠右  
HorizontalAlignType.Center;  //水平置中



1>*.cs

         ws.Range[myfunc.GetExcelPos(0, cur_row)].Text = "□";  //EMPID
ws.Range[myfunc.GetExcelPos(0, cur_row)].Style.HorizontalAlignment = HorizontalAlignType.Right;


  for (var k=0;k<=23;k++)
                        {
                            CellRange cell = ws.Range[myfunc.GetExcelPos(k, cur_row)];
                            cell.Borders.LineStyle = LineStyleType.Thin;
                            cell.Borders.Color = Color.Black;
                            cell.Borders[BordersLineType.DiagonalDown].LineStyle = LineStyleType.None; 
                            cell.Borders[BordersLineType.DiagonalUp].LineStyle = LineStyleType.None;
                        }                        


V20108 – 設定Panel的邊框寬度及顏色

 目的: V20108 – 設定Panel的邊框寬度及顏色

處理說明: 1>cmp_Panel_D12.border = true;
                      cmp_Panel_D12.style = {
                             // 邊框顏色 , // 邊框樣式 , // 邊框粗細
                             borderColor: 'red',
                             borderStyle: 'solid',
                             borderWidth: '2px'
                           };


1>*.js
      cmp_Panel_D12.border = true;
      cmp_Panel_D12.style = {
                              // 邊框顏色 , // 邊框樣式 , // 邊框粗細
                              borderColor: 'red',
                              borderStyle: 'solid',
                              borderWidth: '2px'
                        };

2026年1月21日 星期三

V20301 – 非TLS品項交修件建檔 1>[刪除]鈕 – 將勾選資料s刪除 - PK_LIST

 目的: V20301 – 非TLS品項交修件建檔  1>[刪除]鈕 – 將勾選資料s刪除  - PK_LIST

處理說明:1>[刪除]鈕 - Disable 原本Template.程式 - onclick
                     parent.onclick = function () { };  // 不使用 parent.onclick 
                 
                 2>刪除勾選資料 
                             var Tmp_DataAry1 = []; 
                    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/V20301API/Delete_1';
                    Tmp_RtnStr = getUrlStr(Tmp_url, np, "刪除 勾選的[交修件單號] 資料");
                    if (!checkRtnOK(Tmp_RtnStr)) {
                        mywarnalert(Tmp_RtnStr);
                        return;
                    }
                    else
                        mysuccessalert(Tmp_RtnStr);

                 3>[刪除]鈕 - 刪除勾選資料s - 刪除後,移除畫面的勾選資料 
                      var toRemove = [];
                      Ext.getCmp('grid_Single').store.each(function (rec) {
                         if (rec.get('CHECK') == true)
                              toRemove.push(rec);
                            //gridstore.remove(rec); //畫面上隱藏刪除列  -->改成一次 remove all
                       });
                      gridstore.remove(toRemove); // remove all at once

1>*.js

Ext.getCmp("btn_del").on('click', function (me, e, eOpts) {
        parent.onclick = function () { };  // 
不使用 parent.onclick 
        //var cur_recs = Ext.getCmp('grid_Single').getSelectionModel().getSelection();
        var cur_recs = CHK_PK_OBJ.ALL_LIST;
        var cur_rec;        
        if (cur_recs.length == 0)
        {
            buttonModel.modelType = 0;
            mywarnalert('請先勾選要刪除的資料!!');
        }
        else {
            me.delMessage = "確定刪除勾選的資料嗎?";
            Ext.Msg.confirm('提醒', me.delMessage, callBackFunc);
            function callBackFunc(id) {
                if (id == 'yes') {
                    console.log("cur_recs.length:", cur_recs.length);
                    var gridstore = Ext.getCmp('grid_Single').store;
                    //刪除勾選.FMNO
                    var Tmp_DataAry1 = [];
                    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/V20301API/Delete_1';
                    Tmp_RtnStr = getUrlStr(Tmp_url, np, "刪除 勾選的[交修件單號] 資料");

                    if (!checkRtnOK(Tmp_RtnStr)) {
                        mywarnalert(Tmp_RtnStr);
                        return;
                    }
                    else
                        mysuccessalert(Tmp_RtnStr);
                    //刪除後,移除畫面的勾選資料 
                    var toRemove = [];
                    Ext.getCmp('grid_Single').store.each(function (rec) {
                        if (rec.get('CHECK') == true)
                            toRemove.push(rec);
                            //gridstore.remove(rec); //畫面上隱藏刪除列  -->改成一次 remove all
                    });
                    gridstore.remove(toRemove); // remove all at once

                    Ext.getCmp('grid_Single').getView().refresh();
                    buttonModel.modelType = 0;
                }  // end    if (id == 'yes')             
    

2026年1月20日 星期二

V20201A – 子畫面Grid -無符合條件的資料 –onload

 目的: V20201A – 子畫面Grid -無符合條件的資料 –onload

處理說明: 1>Ext.getCmp('sub_Grid1').store.on("load", function (self, records, successful, operation, eOpts) {
           if ((successful) && (Ext.getCmp('sub_Grid1').store.data.getCount() == 0)) {
               mywarnalert("無符合條件的資料!!");
            }
           }); // end of Ext.getCmp('sub_Grid1').store.on("load", function () {

        -->進入子畫面,就觸發 onLoad event , 所以判斷先是否 successful ,


1>*.js

 Ext.getCmp('sub_Grid1').store.on("load", function (self, records, successful, operation, eOpts) {
            if ((successful) && (Ext.getCmp('sub_Grid1').store.data.getCount() == 0)) {
            mywarnalert("無符合條件的資料!!");
        }
    });  // end of Ext.getCmp('sub_Grid1').store.on("load", function () {

--> 一進入子畫面時, successful=false

2025年12月30日 星期二

V20305O - 撥發單位查詢 -挑選欄位 SQL - SP_NSN@TLS_245 的處理 - @ 的不同資料庫 - 挑選欄位處理 - DBLINK

 目的: V20305O - 撥發單位查詢 -挑選件號  SQL -  SP_NSN@TLS_245

處理說明:1>設定 DBLINK = TLSEU
                     若為測試區,則會自動加 '5'             
                 2>當成一般 Table 處理  SP_NSN
                 3>其他 挑選欄位時,DBLINK會自動還原 成預設值(AMMEU5)
                 4>SQL 修改如下, - 設定 DBLINK 
                      string Tmp_Sql = "  SELECT  DISTINCT  PN   "
                                                + " FROM     SP_NSN  "
                                                + " WHERE   1=1 "
                                                + " ORDER  BY   PN  ";
                      string n = funId + "_sub_PN";
                      DBLINK = "TLSEU";
                      DataSet ds = setupPickDs(n, Tmp_Sql, new string[] { "SP_NSN" }); 



1>*.cs

    [HttpPost]
        public dynamic get_sub_PNPick(string PN = "", int isComplete = 0)
        {
            //列出所有申請單(PN)
string Tmp_Sql = "  SELECT  DISTINCT  PN   "
                        + " FROM     SP_NSN@TLS_245  "
                        + " WHERE   1=1 "
                        + " ORDER  BY   PN  ";
            DataSet ds = setupPickDs(n, Tmp_Sql, new string[] { "SP_NSN@TLS_245" });
            //--> 會出現錯誤訊息 , 修改如下藍字,即可 - DBLINK='TLSEU'
 
            string Tmp_Sql = "  SELECT  DISTINCT  PN   "
                         + " FROM     SP_NSN  "
                         + " WHERE   1=1 "
                         + " ORDER  BY   PN  ";
            string n = funId + "_sub_PN";
            DBLINK = "TLSEU";
            DataSet ds = setupPickDs(n, Tmp_Sql, new string[] { "SP_NSN" });
            if (PN != null && !PN.Equals(""))
            {
                if (isComplete == 1)矩形圖說文字: 若直接寫 SP_NSN@TLS_245
à 
會出現錯誤                {
                    ds = getPickDsbyCondi(n, "PN='" + PN + "'");
                }
                else
                {
                    ds = getPickDsbyCondi(n, "PN  LIKE '%" + PN + "%'");
                }
            }
            return ds;
        }  // end of  get_V20305P_PNPick

2025年12月16日 星期二

SAP系統HANA昇級的時程 -

一. 目的: SAP系統HANA昇級的時程  - 

二.時程:
     目前AIDC和 SAP系統沒有簽維護合約
     2026/02/28 : SAP Table 倒出至AIDC.ERPI資料庫 , Zxxxx的Table 直接開在 ERPI資料庫,
                          不再存在 SAP  Table
     2026/06/30:  AMM系統子功能調整至 ERPI 資料庫
     2030: SAP系統不再支援現行版本(Oracle)


三.修調備註:
      1> J欄標題改為[落差影響不可接受理由]
           K欄:[可接受,調整方式]
      2>Web子功能開啟時成畫面一直線  
           Chrome: 清榮
           Edge: 公司要求


2025年12月14日 星期日

V20201AA – 簡單子畫面- Radiobox - 互斥

 目的: V20201AA – 簡單子畫面- Radiobox

處理說明: 1> var cmp_sub_lbl_AA1 = get_cmp_lbl0("拆檢案專案日期選項:",200);
         var cmp_sub_rd1 = get_cmp_rd1("工廠實際接收日期+2個月", "sub_rd1", 150, true, "0 5 0 20"); 
         cmp_sub_rd1.checked = true;




1>*.js
function CALL_V20201AA() {
    console.log(" 1 inside - Call_V20201AA 加入排程: ");
    //panel11 - 拆檢案專案日期選項
    var cmp_sub_lbl_AA1 = get_cmp_lbl0("拆檢案專案日期選項:",200);
    var cmp_sub_rd1 = get_cmp_rd1("工廠實際接收日期+2個月", "sub_rd1", 150, true, "0 5 0 20");
    cmp_sub_rd1.checked = true;
    var cmp_sub_rd2_panel = get_cmp_panel1(200);
    var cmp_sub_rd2 = get_cmp_rd1("自行輸入", "sub_rd2", 50, false, "0 5 0 20");
    var cmp_sub_rd2_PROJDT = get_cmp_dt0('sub_rd2_PROJDT', 100);

    cmp_sub_rd2_panel.items.push(cmp_sub_rd2, cmp_sub_rd2_PROJDT);
    var cmp_sub_lbl_SPARE = get_cmp_lbl0(":");
       
    var sub_V20201AA_Flds = [
        {
            type: 'panel', bodyStyle: "background-color:transparent;", border: 5, padding: "1",
            layout: 'border',
            items: [
                {
                    xtype: 'panel', id: 'sub_panelAA1', region: 'center', 
                    height: 100,
                    //layout: { type: 'vbox', align: 'stretch' },
                    layout: { type: 'vbox',},
                    items: [
                        cmp_sub_lbl_AA1,
                        cmp_sub_rd1,
                        cmp_sub_rd2_panel,
                        cmp_sub_lbl_SPARE
                    ],
                },               
            ]
        }
    ];

2>互斥
Ext.getCmp("sub_rd1").on('change', function (me, newValue, oldValue, eOpts) {
        if (newValue == true) {
            Ext.getCmp("sub_rd2").setValue(false);
        }
    }
    );  // end of  cmp_sub_rd1.on("change"

    Ext.getCmp("sub_rd2").on('change', function (me, newValue, oldValue, eOpts) {
        if (newValue == true) {
            Ext.getCmp("sub_rd1").setValue(false);
        }
    }
    );  // end of  cmp_sub_rd1.on("change"