2024年10月27日 星期日

V20304A-工時提列- 子畫面放至最大  win1.show(); win1.maximize(); - max

 目的:V20304A-工時提列- 子畫面放至最大 , win1.show();    win1.maximize();

處理說明: 1>win1.show();    //執行後, 才可執行 win1.maximize();

                  2> win1.maximize();




1>*.js

    win1.show();
    win1.maximize();



2024年10月22日 星期二

V80403- 單檔 – 1>隱藏[編輯]頁 2>新增[工時]頁 – TabSheet - TabPanel

 目的: V80403- 單檔 – 1>隱藏[編輯]   2>新增[工時] – TabSheet - TabPanel

處理說明:  1>//隱藏[編輯]頁 - 按鈕
                         Ext.getCmp('TMSingleViewEdit').setTabVisible(0, false);
                         TMSingleViewEdit.setTemplateBtnVisible(false);
                          Ext.getCmp('btn_add').setVisible(false);
                          Ext.getCmp('btn_edit').setVisible(false);
                          Ext.getCmp('btn_del').setVisible(false);
                   2>新增[工時]頁
                        var Tmp_FormObj = Ext.create("Ext.form.Panel", {
                                title: '工時', id: 'tab_HR', cls: 'edit_BC', layout: { type: 'vbox', align: 'stretch' },
                                 items: [Query1, DataPanel],
                        });
                       Ext.getCmp('TMSingleViewEdit').add(Tmp_FormObj);



1>*.js
      //隱藏[編輯]頁 - 按鈕
       Ext.getCmp('TMSingleViewEdit').setTabVisible(0, false);
       TMSingleViewEdit.setTemplateBtnVisible(false);

    //新增 [工時]頁
    console.log("0 Query1");
     var Query1 = new Ext.FormPanel({
        id: 's1_form', flex: 1,
        layout: { type: 'hbox', align: 'stretch' },
        fieldDefaults: { labelAlign: 'right' },
        defaults: { margin: { top: 3 } },
        height: 20,
        items: [   ...]


  var Tmp_FormObj = Ext.create("Ext.form.Panel", {
        title: '工時', id: 'tab_HR', cls: 'edit_BC', layout: { type: 'vbox', align: 'stretch' },
        items: [Query1, DataPanel],
    });
    Ext.getCmp('TMSingleViewEdit').add(Tmp_FormObj);

2024年10月21日 星期一

V80403 -CaluField 當成過濾條件 – 1>顯示全部資料,不分頁 2>分頁Bar隱藏 - timeout - onload - T1C

 目的:V80403 -CaluField 當成過濾條件 – 1>顯示全部資料,不分頁      2>分頁Bar隱藏

處理說明: 1>若勾選[V](TLS工場xxxx,則資料全取,不分頁
          // 若勾選[V](TLS工場報價總工時-ALS工場已報工工時)低於xx小時,則資料全取,不分頁
            DataSet ds = null;
            if ((Tmp_chk_LESSHR1 == "true") && (!myfunc.checkisnull(Tmp_chk_LESSHR2)))  
                ds = getDataTable(cmd, countSql,false,true);  
            else                ////資料分頁 , 30筆/頁
                ds = getDataTable(cmd, countSql, true, true);
            int Tmp_Cnt = ds.Tables["T1"].Rows.Count;
  
                 2>隱藏分頁Bar
                      Ext.getCmp('grid_ptb').hide();            
                 3>重設總筆數
                ds.Tables["T1"].AcceptChanges();
     ds.Tables["T1C"].Rows[0]["TOTAL"] = int.Parse(ds.Tables["T1C"].Rows[0]["TOTAL"].ToString()) - Tmp_DelCnt;



1>*.js
var Tmp_chk_LESSHR1 = Ext.getCmp('s_chk_LESSHR1').getValue();
var Tmp_chk_LESSHR2 = Ext.getCmp('s_chk_LESSHR2').getValue();
np["s_rd_AMMSTS"] = Ext.getCmp('s_rd_AMMSTS').getValue();
np["s_rd_LQTY"] = Ext.getCmp('s_rd_LQTY').getValue();
try {
var Tmp_Proc_Msg = "";
if (Tmp_chk_LESSHR1 == false)
      Tmp_Proc_Msg = '資料顯示中, 請稍候...<br>';
else
    if (!checkisnull(Tmp_chk_LESSHR2)) {
         Tmp_Proc_Msg = "資料顯示中, 請稍候...<br><br>"
                                    + "因勾選[V]TLS工場報價總工時...<br>"
                                    + "會顯示全部資料且不分頁<br>"
                                    +"處理時間約需1x分鐘<br><br>"
                                    +"敬請稍候!!";

//不顯示ToolBar - 分頁Bar
console.log("Ext.getCmp('grid_ptb'):", Ext.getCmp('grid_ptb'));
Ext.getCmp('grid_ptb').hide();
}
var Proc_Msg = new Ext.LoadMask(Ext.getCmp("s_PROCMSG"),
        { msg: Tmp_Proc_Msg, }
);

gridstore.getProxy().timeout = 1200000;
gridstore.getProxy().url = '../api/V80403API/getGridData_M';
gridstore.getProxy().extraParams = np; //分頁OK,篩選條件OK
console.log("1 reloadGridData - before");
Ext.getCmp('grid_Single').reloadGridData();
console.log("2 reloadGridData - after");
Ext.getCmp('grid_Single').store.on("load", function (me, records, successful, eOpts) {
Proc_Msg.hide(); //若顯示完成,則不再顯示訊息

});


2>*.cs
           // 若勾選勾選[V](TLS工場xxxx,則資料全取,不分頁
            DataSet ds = null;
            if ((Tmp_chk_LESSHR1 == "true") && (!myfunc.checkisnull(Tmp_chk_LESSHR2)))  
                ds = getDataTable(cmd, countSql,false,true);  
            else                ////資料分頁 , 30筆/頁
                ds = getDataTable(cmd, countSql, true, true);
            int Tmp_Cnt = ds.Tables["T1"].Rows.Count;


        dr["LQTY_CNT_"] = Tmp_LQTY_CNT_;
                dr["PN_CNT_"] = Tmp_PN_CNT_;
                dr["MEET_PERCENT_"] = Tmp_MEET_PERCENT_;
            }  // end of for (int i = 0; i < Tmp_Cnt; i++)

            //若 [V](TLS工場報價工時 - ALS工場已報工工時)  高於 [XX]小時, 則刪除
            int Tmp_DelCnt = 0;
            if ((Tmp_chk_LESSHR1 == "true")  && (!myfunc.checkisnull(Tmp_chk_LESSHR2)))
            {
                for (int i = 0; i < Tmp_Cnt; i++)
                {
                    if (i >= ds.Tables["T1"].Rows.Count)
                    {
                        break;
                    }
                    DataRow dr = ds.Tables["T1"].Rows[i];
                    Tmp_TLS_ALS_MINUSHR_ = float.Parse(dr["TLS_ALS_MINUSHR_"].ToString());                    
                     if (Tmp_TLS_ALS_MINUSHR_ > float.Parse(Tmp_chk_LESSHR2))
                        {
                            dr.Delete();
                            Tmp_DelCnt = Tmp_DelCnt + 1;
                        }                                                
                } // for int i = 0; i < Tmp_Cnt; i++)
                  //重新設定總筆數
                ds.Tables["T1"].AcceptChanges();
                ds.Tables["T1C"].Rows[0]["TOTAL"] = int.Parse(ds.Tables["T1C"].Rows[0]["TOTAL"].ToString()) - Tmp_DelCnt;
            }//  if (Tmp_chk_LESSHR1 == "true")             

            return ds;

V80403 – 於Panel內 -顯示訊息: 資料處理中– loadMask - 版面配置

目的: V80403 – Panel -顯示訊息: 資料處理中– loadMask  - 版面配置

處理說明: 1>顯示[資料處理中]
                       var Proc_Msg = new Ext.LoadMask(Ext.getCmp("s_PROCMSG"),
                                    { msg: Tmp_Proc_Msg, }
                       );
                       Proc_Msg.show();
                       //載入完成後,不再顯示訊息
                       Ext.getCmp('grid_Single').store.on("load", function (me, records, successful, eOpts) {
                              Proc_Msg.hide();  //若顯示完成,則不再顯示訊息
                     });

                   2>版面配置
                        Query=..
                       {
                        xtype: 'panel', id: 'panel14', layout: { type: 'vbox', align: 'stretch' }, flex: 40, border: 0,
                        items: [cmp_panel141, cmp_panel142],
                       },   // end of panel14 
                       
                        cmp_panel141.items.push(cmp_panel1411, cmp_panel1412);
                        cmp_panel1411.items.push(cmp_rd_AMMSTS, cmp_rd_LQTY);
                             
                             var cmp_panel141 = get_cmp_panel1(120,85);
                             var cmp_panel1411 = get_cmp_panel1(120, 40);
                              cmp_panel1411.layout = { type: 'vbox', align: 'stretch' };
                              cmp_panel1411.items.push(cmp_rd_AMMSTS, cmp_rd_LQTY);



1>*.js
//panel141 & panel142
    var cmp_panel141 = get_cmp_panel1(120,85);
    var cmp_panel1411 = get_cmp_panel1(120, 40);
    cmp_panel1411.layout = { type: 'vbox', align: 'stretch' };
    cmp_panel1411.items.push(cmp_rd_AMMSTS, cmp_rd_LQTY);
    var cmp_panel1412 = {  //顯示等候訊息
       id: "s_PROCMSG", name: "s_PROCMSG", xtype: "panel", flex:40, height: 200, margin: "0 4 0 4",
        hidden: false, border: 0, style: 'background-color:#FFFFFF;'
    };
    cmp_panel141.items.push(cmp_panel1411, cmp_panel1412);
    var cmp_panel142 = get_cmp_panel1(120,15);
    cmp_panel142.items.push(cmp_chk_LESSHR);

Query=..
                {
                        xtype: 'panel', id: 'panel14', layout: { type: 'vbox', align: 'stretch' }, flex: 40, border: 0,
                        items: [cmp_panel141, cmp_panel142],
                    },   // end of panel14 

2024年10月16日 星期三

V80202 – checkbox 含輸入值

 目的: V80202 – checkbox 含輸入值

處理說明: 1>以 Panel 當 Container 方式 : 
                      加入  checkbox & 輸入欄位 & Label


1>*.js

//[ ] 超過xx
    var cmp_chk_SAPDT5 = get_cmp_panel1(120);
    var cmp_chk_SAPDT51 = get_cmp_chk1('超過', 's_chk_SAPDT51', 70, '5','0 5 0 0');
    var cmp_chk_SAPDT52 = get_cmp_txt0('s_chk_SAPDT52', 30);
    var cmp_chk_SAPDT53 = get_cmp_lbl0('', 30);
    cmp_chk_SAPDT5.items.push(cmp_chk_SAPDT51, cmp_chk_SAPDT52, cmp_chk_SAPDT53);   

2024年10月10日 星期四

V80403 – 領班專案系統件查詢 – 加入 TabSheet - TabPanel

 目的: V80403 – 領班專案系統件查詢 加入 TabSheet - TabPanel

處理說明:





2024年10月6日 星期日

V80202M – [Finding處置匯入]鈕 – 匯入資料,並回傳處理結果檔 - 回傳檔案 - 處理結果 - Files

 目的: V80202M – [Finding處置匯入] 匯入資料,並回傳處理結果檔

處理說明:  1>匯入檔案 :
                                               foreach (string cur_FName in Request.Files)
                                               {
                                                    Stream Tmp_in_Stream = Request.Files[cur_FName].InputStream;
                                              }
                                             wk = new Workbook();
                                    wk.LoadFromStream(Tmp_in_Stream);

                              2>回傳結果檔案:
                                       wk.SaveToStream(stream, FileFormat.Version2007);
                                       HttpContext.Current.Response.BinaryWrite(stream.ToArray());




1>*.cs
[HttpPost]
        public void UPDATE_QDRWKTP()
        {
            HttpContext c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            //OracleConnection conn = new OracleConnection(DBService.ConnectionString(("AMMEU"));//
            OracleConnection conn = new OracleConnection(DBService.ConnectionString((DBLINK)));//
            OracleCommand cmd = new OracleCommand();
            OracleDataReader reader;
            DataSet ds = null;
            //取得匯入檔案名稱   of   filefield            
            string Tmp_FName = nvc["sub_FName"];
            string Tmp_in_FName="", Tmp_out_FName="";
            Workbook wk = null;
            MemoryStream stream = new MemoryStream();
            Worksheet ws=null;
           HttpRequest Request = HttpContext.Current.Request;
            var response = this.Request.CreateResponse();
            //string file_Name = Tmp_in_FName;
            string FILEDT = DateTime.Now.ToString("yyyy/MM/dd");
            string Tmp_RtnMsg = "";
            string Tmp_RtnMsg1 = "";
            string Tmp_Sql = "", Tmp_Str = "";
            int Tmp_cnt = 0;
            int Tmp_rowcnt = 0;
            HttpCookie MyCookie = new HttpCookie("Rtn_Msg");
            //HttpCookie MyCookie = new HttpCookie("Rtn_Msg", HttpUtility.UrlEncode(Tmp_Str));            
            conn.Open();
            cmd.Connection = conn;
            try
            {
                foreach (string cur_FName in Request.Files)
                {
                    string fileType = Request.Files[cur_FName].ContentType;
                    Stream Tmp_in_Stream = Request.Files[cur_FName].InputStream;
                    Tmp_in_FName = Path.GetFileName(Request.Files[cur_FName].FileName);
                    Tmp_out_FName = "Log_" + Tmp_in_FName;
                    int fileSize = Request.Files[cur_FName].ContentLength;
                    byte[] fileRcrd = new byte[fileSize];
                    //更新資料庫欄位值                                                
                    //匯入的 xls
                    wk = new Workbook();
                    wk.LoadFromStream(Tmp_in_Stream);
                    ws = wk.Worksheets[0];                    
                    string Tmp_SAPNO, Tmp_QDRWKTP;
                    
                    //STEP1 檢核  XLS 欄位名稱資料是否正確  -取得 標題 of  工號,處置說明                                          
                    Tmp_SAPNO = ws.Range[myfunc.GetExcelPos(0, 0)].Value;
                    Tmp_QDRWKTP = ws.Range[myfunc.GetExcelPos(1, 0)].Value;
                    //xls 欄位名稱有問題
                    if ((Tmp_SAPNO != "工號") || (Tmp_QDRWKTP  != "處置說明"))
                    {
                        Tmp_RtnMsg = "匯入檔案欄位名稱必需如下:<br>";
                        //(Tmp_DTSOR != "資料來源") || (Tmp_OGONOAF != "拆檢提領編號") || (Tmp_NGONOAF != "維修提領編號") || (Tmp_RPNOAF != "拆檢交修單號") || (Tmp_MRPNOAF != "維修約交修單號") ||
                        if (Tmp_SAPNO != "工號")
                            Tmp_RtnMsg = Tmp_RtnMsg + "第1欄欄位名稱:  [工號];";
                        if (Tmp_QDRWKTP != "處置說明")
                            Tmp_RtnMsg = Tmp_RtnMsg + "第2欄欄位名稱:  [處置說明];";
                        MyCookie.Value = HttpUtility.UrlEncode(Tmp_RtnMsg);
                        HttpContext.Current.Response.Cookies.Add(MyCookie);
                        HttpContext.Current.Response.End();
                        return;
                    };
                    ws.Range[myfunc.GetExcelPos(2, 0)].Value = "匯入結果說明";
                    //STEP2 取得xls.[目前件號].報工資料                    
                    // Transaction SQL List - 存放  Transaction 的 SQL 
                    List<string> SQL_List_A = new List<string>();
                    int RowsCount = ws.LastRow;
                    //int Tmp_cnt;
                    for (int i = 0; i < RowsCount; i++)
                    {                        
                        Tmp_SAPNO = ws.Range[myfunc.GetExcelPos(0, i + 1)].Value;
                        Tmp_QDRWKTP = ws.Range[myfunc.GetExcelPos(1, i + 1)].Value;
                        if (myfunc.checkisnull(Tmp_SAPNO))
                        { break; }
                        Tmp_Sql=" SELECT   COUNT(*)  "
                                       +"  FROM    AMM_SRO  "
                                       +"  WHERE  SAPNO=" + myfunc.AA(Tmp_SAPNO.Trim());
                        Tmp_cnt = int.Parse(myfunc.SqlValue(Tmp_Sql));
                        if (Tmp_cnt == 0)
                        {
                            ws.Range[myfunc.GetExcelPos(2, i + 1)].Value = "工號不存在AMM系統";
                        }
                        else
                        {
                            Tmp_Sql = " UPDATE   AMM_SRO  "
                                           + "  SET          QDRWKTP=" + myfunc.AA(Tmp_QDRWKTP.Trim())
                                           + "  WHERE   SAPNO=" + myfunc.AA(Tmp_SAPNO.Trim());
                            //SQL_List_A.Add(Tmp_Sql);
                            myfunc.SqlExec(Tmp_Sql);                            
                            ws.Range[myfunc.GetExcelPos(2, i + 1)].Value = "更新完成";
                        }
                        Tmp_rowcnt = Tmp_rowcnt + 1;
                    }  // end of for (int i = 0; i < RowsCount; i++)                    
                    //excuteSQLTran(SQL_List_A);
                }  //end of foreach (string cur_FName in Request.Files)
                ws.AllocatedRange.AutoFitColumns();
                wk.SaveToStream(stream, FileFormat.Version2007);
                Tmp_Str = "Finding處置完成!!(" + Tmp_rowcnt.ToString() + "筆)<br>"
                            + "匯入檔案名稱(" + Tmp_FName + ")";
                MyCookie = new HttpCookie("Rtn_Msg", HttpUtility.UrlEncode(Tmp_Str));
                //MyCookie.Value = HttpUtility.UrlEncode(Tmp_Str);
                HttpContext.Current.Response.Cookies.Add(MyCookie);
                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode(Tmp_out_FName, System.Text.Encoding.UTF8) + "\"");
                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
                HttpContext.Current.Response.BinaryWrite(stream.ToArray());
                HttpContext.Current.Response.End();                
            } // end fo try{             
            catch (Exception e)
            {
                //Console.WriteLine(e);
                Tmp_RtnMsg = "錯誤訊息如下:"
                                         + e.Message;
                MyCookie.Value = HttpUtility.UrlEncode(Tmp_RtnMsg);
                HttpContext.Current.Response.Cookies.Add(MyCookie);
                HttpContext.Current.Response.End();
                //throw;
            }
            finally
            {
                wk.Dispose();                
                conn.Close();
            }
            //return response;
            //Tmp_Cnt = 6;            
        }  //  end of  UPDATE_QDRWKTP()