2024年9月27日 星期五

V80202 – 工單物料查詢 – 勾選[V]專案報價,則 專案別=’F16V’ 唯讀, 工單類別=’DTXX’ 唯讀

 目的: V80202 – 工單物料查詢 勾選[V]專案報價, 專案別=’F16V’ 唯讀(底色: 灰色)

處理說明:  1> 欄位設為唯讀:
                         Ext.getCmp("s_PROJID").setReadOnly(true);
                   2>欄位唯讀 , 底色: 灰色
                       Ext.getCmp("s_PROJID").inputEl.addCls('readonly');             
                       --> Ext.getCmp("s_PROJID").inputEl.addCls
                       --> 必需在畫面已顯示(win.show())後,才可設定 


1>*.js
// // 若勾選[v]專案報價-->則 [專案別]='F16V' & [工單類別]='DTXX' 唯讀 & 機號必填
Ext.getCmp("s_chk_OTHR").items.items[5].on('change', function (me, newValue, oldValue, eOpts) {
if (newValue) { //
     Ext.getCmp("s_PROJID").setValue("F16V"); 
     Ext.getCmp("s_PROJID").setReadOnly(true);
     Ext.getCmp("s_PROJID").inputEl.addCls('readonly');
     Ext.getCmp("s_SROTP").setValue("DTXX");
     Ext.getCmp("s_SROTP").setReadOnly(true);
     Ext.getCmp("s_SROTP").inputEl.addCls('readonly');
}
else {
     Ext.getCmp("s_PROJID").setValue("");
     Ext.getCmp("s_PROJID").setReadOnly(false);
     Ext.getCmp("s_PROJID").inputEl.removeCls('readonly');
     Ext.getCmp("s_SROTP").setValue("");
     Ext.getCmp("s_SROTP").setReadOnly(false);
     Ext.getCmp("s_SROTP").inputEl.removeCls('readonly');
}




2024年9月26日 星期四

V80202 -顯示工號 – [V]子件工單 - UNION 用法 - 日期起迄 - 分成2行 - 過濾條件

 目的: V80202 -顯示工號 – [V]子件工單  

處理說明: 1>子件工單的定義: 共3類
   1>>AMM單號含 -x : AMMNO 長度>13 且 SUBSTRING(AMMNO,1,13) IN (AMM單號)
   2>>QDR工單且 PSAPNO 符合條件的工單 : 為QDR工單,且 PSAPNO IN (工號)
   3>>TP工單且PSAPNO符合條件的QDR工單: 為 TP工單,且 PSAPNO IN ( 如上2>>的QDR工單)


1>*.cs
string Tmp_sWhere = "";  //過濾條件SQL - 不含 Select   from 
string Tmp_sFlds = "  AMMNO, PJER, PCODE, CST_NO, BM146NO, SAPNO,  TESTHR, OSM   ";
string Tmp_Sql = " SELECT  RNK,     "+ Tmp_sFlds                                                    
                          + "  FROM  ( "
                                  + "   SELECT   dense_rank()  over(order by  AMMNO) as RNK,  "+ Tmp_sFlds
                                  +"    FROM  ( "
                                                        + "  SELECT "+ Tmp_sFlds
                                                        + "  FROM      AMM_SRO  A "
                                                        + "    WHERE   1=1 ";
            if (!myfunc.checkisnull(Tmp_AMMNO))
            {
                Tmp_Sql = Tmp_Sql + " AND   AMMNO=" + myfunc.AA(Tmp_AMMNO);
                Tmp_sWhere = Tmp_sWhere + " AND   AMMNO=" + myfunc.AA(Tmp_AMMNO);
            }
            if (!myfunc.checkisnull(Tmp_SAPNO))
            {
                Tmp_Sql = Tmp_Sql + " AND   SAPNO=" + myfunc.AA(Tmp_SAPNO);
                Tmp_sWhere = Tmp_sWhere + " AND   SAPNO=" + myfunc.AA(Tmp_SAPNO);
            }

//顯示: DISP    6 :  6子件工單
//顯示 [子件工單] 
1>AMM單號含 -x :AMMNO 長度>13 且 SUBSTRING(AMMNO,1,13) IN (符合條件的 AMM單號)
2>QDR工單且 PSAPNO 符合條件的工單  : 為QDR工單,且 PSAPNO  IN (符合條件的工號)
3>TP工單且PSAPNO符合條件的QDR工單: 為 TP工單,且 PSAPNO IN ( 如上2>的QDR工單)

  if (!myfunc.checkisnull(Tmp_chk_DISP))
  {
     if (Tmp_chk_DISP.IndexOf("6") > -1)   //顯示6子件工單 - 顯示目前工單的子件工單
     {
         Tmp_Sql = Tmp_Sql
                         + " UNION  "
                                           + " SELECT  " + Tmp_sFlds
                                           + " FROM     AMM_SRO "
                                           + " WHERE  1=1 "
                                           + "  AND      AMMNO IN (  SELECT  AMMNO FROM  AMM_SRO "
                                                                                     +" WHERE  LENGTH(AMMNO)>13  "
         +" AND SUBSTR(AMMNO,1,13) IN (SELECT AMMNO FROM AMM_SRO WHERE   1=1   " + Tmp_sWhere + " ) )"
                       + "   UNION  "
                                           + "  SELECT  " + Tmp_sFlds
                                           + "   FROM     AMM_SRO  "
                                           + "   WHERE   1=1 "
                                           + "  AND        ISQDR = 'Y'   "
                         + "  AND         PSAPNO IN  ( SELECT SAPNO FROM AMM_SRO  WHERE   1 = 1   " + Tmp_sWhere + ")"
                        + "   UNION  "
                                           + "  SELECT  " + Tmp_sFlds
                                           + "   FROM     AMM_SRO  "
                                           + "   WHERE   1=1 "
                                           + "  AND        ISTP = 'Y'   "
                                           + "  AND  PSAPNO IN ( SELECT SAPNO  FROM  AMM_SRO  WHERE  ISQDR='Y'   AND  PSAPNO IN ( SELECT SAPNO FROM AMM_SRO  WHERE   1=1  " + Tmp_sWhere + " )  )  ";
                    }
                }  //end of  if (!myfunc.checkisnull(Tmp_chk_DISP))

            Tmp_Sql = Tmp_Sql + "   )   ";   // UNION , 不含 RNK
            Tmp_Sql = Tmp_Sql + "   )   ";  //  RNK

2024年9月24日 星期二

V80202 - 工單資料查詢 - 依目前資料 , 設定 Grid 的字體顏色 - 設定 Grid.行字體顏色 - getRowClass - 載入css - head - style

 目的: V80202 - 工單資料查詢 - 依目前資料 , 設定 Grid 的字體顏色

處理說明: 1>設定 Cell 字體顏色依目前資料 , 設定 Grid 的字體顏色
{header:"是否曾展BOM",dataIndex:"ISBOMIN",width:100,sortable:false,TMType:"string"},
{header: "停工中", dataIndex: "ISSTOP", width: 60, sortable: false, TMType: "string",
  renderer: function (value) 
                      {
      if (value == "Y") { return "<span  style='color:red'>" + value + "</span>"; }
                            else  {  return value;            }
                      } },

                 2>設定 row 字體顏色 依目前資料 , 設定 Grid 的字體顏色  - getRowClass    Ext.getCmp('grid_Single').getView().getRowClass = function (record, rowIndex, rowParams, store) {   
if (record.data.ISSTOP == "Y") {
      return "my-red-color";
}






1>*.js
{header:"是否曾展BOM",dataIndex:"ISBOMIN",width:100,sortable:false,TMType:"string"},
{
header: "停工中", dataIndex: "ISSTOP", width: 60, sortable: false, TMType: "string",
renderer: function (value) {
if (value == "Y") {
    return "<span style='color:red'>" + value + "</span>";
}
else {
return value;
}}},
{header:"專案委託人",dataIndex:"PJER",width:100,sortable:false,TMType:"string"},





2>*.js
  2.1>>載入 mycss.css
             var Tmp_Str = "<link type='text/css' rel='stylesheet' href='../JsFunction/mycss.css'  >";
             $('head').append(Tmp_Str);

mycss.css 內容
.my-red-color {
    color: red;
}

.my-black-color {
    color: black;
}


 2.2>>設定 Grid.行字體顏色  - getRowClass
    Ext.getCmp('grid_Single').getView().getRowClass = function (record, rowIndex, rowParams, store) {
        if (record.data.ISSTOP == "Y") {
            return "my-red-color";
        }
        else
            return "my-black-color";
    }
         
 


2024年9月22日 星期日

V80202 – 工單資料查詢 –畫面開啟時, combo1 預設值 :生產工廠(PROCWC)

 目的: V80202 – 工單資料查詢 畫面開啟時, combo1 預設值 :生產工廠(PROCWC)

處理說明:  1> 畫面開啟時,  combo1 預設值 :"生產工廠"  , value="PROCWC"
                         Ext.getCmp("s_filter1").setValue("PROCWC");
                       selectedValues["s_filter1"] = "PROCWC";            
                       Ext.getCmp("s_filter1_txt").setValue("7100");
                  2> checkbox 預設值為  true, checked
                       var cmp_chk_TP5 = get_cmp_chk0('排除QDR工單', 's_chk_TP', 50, '5');
                       cmp_chk_TP5.checked = true;





1>*.js
    //combo:  s_filter1 預設為 '生產工廠'   過濾值='7100'
    Ext.getCmp("s_filter1").setValue("PROCWC");
    selectedValues["s_filter1"] = "PROCWC";            
    Ext.getCmp("s_filter1_txt").setValue("7100");

//工單:  1/2/3/4/5/6/ALL  : 1TP工單/2非TP工單/3子件工單/4機務工單/5排除QDR工單/6無PDM物料需求
    var cmp_chk_TP = get_cmp_chkgrp1('工單', 's_chk_TP', 30);
    var cmp_chk_TP1 = get_cmp_chk0('TP工單', 's_chk_TP', 50, '1');
    var cmp_chk_TP2 = get_cmp_chk0('非TP工單', 's_chk_TP', 50, '2');
    var cmp_chk_TP3 = get_cmp_chk0('子件工單', 's_chk_TP', 50, '3');
    var cmp_chk_TP4 = get_cmp_chk0('機務工單', 's_chk_TP', 50, '4');
    var cmp_chk_TP5 = get_cmp_chk0('排除QDR工單', 's_chk_TP', 50, '5');
    var cmp_chk_TP6 = get_cmp_chk0('無PDM物料需求', 's_chk_TP', 50, '6');
    var cmp_chk_TP7 = get_cmp_chk0('QDR完工&TP未完工', 's_chk_TP', 50, '7');    
    cmp_chk_TP.items.push(cmp_chk_TP1, cmp_chk_TP2, cmp_chk_TP3, cmp_chk_TP4, cmp_chk_TP5, cmp_chk_TP6,
        cmp_chk_TP7,
    );
    cmp_chk_TP5.checked = true;

    

V80202A – [顯示QDR明細資料]鈕 –工號(FAM0447) – 開啟QDR網址 - window.open(Tmp_webaddr)

 目的: V80202A – [顯示QDR明細資料] 工號(FAM0447) – 開啟QDR網址

處理說明: 1>工號(FAM0447)  -  [顯示QDR明細資料]  - 開啟如下  QDR網址    
                           https://aesweb/qdr/qdr_online/qdr_view.asp?qdr_id= 55808
                      2> window.open(Tmp_QDR_addr);                                      
                       Tmp_QDR_addr="https://aesweb/qdr/qdr_online/qdr_view.asp?qdr_id= 55808";



 2>顯示資料 - 聯結的網址如颪:   
https://aesweb/qdr/qdr_online/qdr_view.asp?qdr_id=55808




2024年9月18日 星期三

V80202J- F16V工單進度 – checkboxgroup –機號多行多選 – get_cmp_ - New - 左右移動 - 前端取得SQL資料 - Tmp_Store

 目的: V80202J- F16V工單進度 – checkboxgroup – 機號多選 – get_cmp_ - New

處理說明: 
1>版面設計:   
        {
          xtype: 'panel',bodyStyle: "background-color:transparent;", xtype: 'panel', border: 0, padding: "1", 
            layout: 'border',            
            items: [
                {  //form_chkbox1 : 待挑選機號                                        
                    xtype: 'panel', title: '可挑選機號', width: 250,                    
                    region: 'west',
                    items: [  cmp_chk_chkboxgrp1,  ]
                },  //end of 待挑選機號                                        
                {  //按鈕 : 往右/往左/全部往右/全部往左
                    xtype: 'panel', title: '', width: 80,
                    region: 'west',                   
                    layout: { type: 'vbox', align: 'stretch' },                    
                    items: [                       ]
                },  //end of 待挑選機號                                        
                {  //checkboxgroup2 : 已挑選機號                                        
                    xtype: 'panel', title: '已挑選機號', 
                    region: 'center',
                    items: [ cmp_chk_chkboxgrp2,]
                },  //end of  已挑選機號2                
            ]
        }  // end of J_formFields_Sub2
        ];    

2>設定 checkboxgroup - 3欄 
    var cmp_chk_chkboxgrp1 = get_cmp_chkgrp1('', 'chkboxgrp1', 0, true, [.35, .35, .35]);        
    var cmp_chk_chkboxgrp2 = get_cmp_chkgrp1('', 'chkboxgrp2', 0, true, [.35, .35, .35]);        
     --> function get_cmp_chkgrp1(par_caption, par_id, par_l_width, par_vertical, par_columns) {
           checkboxgroup: 多欄時,  layout 不可設為 vbox
       
3>設定按鈕- 處理函式
//按鈕 : 往右/往左/全部往右/全部往左
    var cmp_btn_right = get_cmp_btn1("往右", "btn_move1", 1, "icon-right", cmp_btn_right_ok);
    var cmp_btn_left = get_cmp_btn1("往左", "btn_move2", 1, "icon-left", cmp_btn_left_ok);
    
    //按鈕- 處理函式應放在  CALL_V80202J() {} 函式內, 呼叫該函式時,才載入, 
       --> 不佔記憶空間 , 且結束時,函式空間就會釋放

4>checkboxs傳至後端, 若為 Array/Object 必需先轉成 JSON
     var Tmp_JSONStr = JSON.stringify(Ext.getCmp('chkboxgrp2').getValue()["rb"]);


1>*.js
function  Call_V80202J() {
    console.log(" 2 inside - CALL_V80202J -  F16V 工單進度: ");          
    //3行 - checkboxgroup
    var cmp_chk_chkboxgrp1 = get_cmp_chkgrp1('', 'chkboxgrp1', 0, true, [.35, .35, .35]);        
    var cmp_chk_chkboxgrp2 = get_cmp_chkgrp1('', 'chkboxgrp2', 0, true, [.35, .35, .35]);        
    //按鈕 : 往右/往左/全部往右/全部往左
    var cmp_btn_right = get_cmp_btn1("往右", "btn_move1", 1, "icon-right", cmp_btn_right_ok);
    var cmp_btn_left = get_cmp_btn1("往左", "btn_move2", 1, "icon-left", cmp_btn_left_ok);
    var cmp_btn_allright = get_cmp_btn1("全部往右", "btn_move11", 1, "icon-right", cmp_btn_allright_ok);
    var cmp_btn_allleft = get_cmp_btn1("全部往左", "btn_move22", 1, "icon-left", cmp_btn_allleft_ok);
    
// [工作中心報工匯出]鈕  - 子畫面欄位
    var J_formFields_Sub2 = [
        {
            xtype: 'panel',bodyStyle: "background-color:transparent;", xtype: 'panel', border: 0, padding: "1", 
            layout: 'border',            
            items: [
                {  //form_chkbox1 : 待挑選機號                                        
                    xtype: 'panel', title: '可挑選機號', width: 250,                    
                    region: 'west',
                    items: [  cmp_chk_chkboxgrp1,  ]
                },  //end of 待挑選機號                                        
                {  //按鈕 : 往右/往左/全部往右/全部往左
                    xtype: 'panel', title: '', width: 80,                    
                    region: 'west',
                    layout: { type: 'vbox', align: 'stretch' },                     
                    items: [                                                
                        { xtype: 'panel', height: 50,   },// end of  虛 space
                        cmp_btn_right, cmp_btn_left,                        
                        { xtype: 'panel', height: 50 ,},// end of  虛 space
                        cmp_btn_allright, cmp_btn_allleft,                                                
                    ]
                },  //end of 待挑選機號                                        
                {  //checkboxgroup2 : 已挑選機號                                        
                    xtype: 'panel', title: '已挑選機號',                     
                    region: 'center',
                    items: [ cmp_chk_chkboxgrp2,]
                },  //end of  已挑選機號2                
            ]
        }  // end of J_formFields_Sub2
        ];    

    var cmp_btn_V80202J_OK = get_cmp_btn1("確定", "btn_V80202J_OK", 1, "", cmp_btn_V80202J_OK);
    function cmp_btn_V80202J_OK(me, e, eOpts) {
        console.log("1  OkBtn_Sub2 click ");
        var Tmp_Str = "";
        var Tmp_cnt = Ext.getCmp('chkboxgrp2').items.length;
        //var selectedSuccessValues = Ext.getCmp('cboxgrp2').getChecked();
        console.log("Tmp_cnt:", Tmp_cnt);
        if (Tmp_cnt == 0) {
            Tmp_Str = "請先挑選要匯出F16V報工現況的機號<br>"
                + " 敬請檢核 !!";
            mywarnalert(Tmp_Str);
            return;
        }
        //Ok_process_sub2(me, e, eOpts);                           
        V80202J_Ok(me, e, eOpts);
    } // end of click
    var cmp_btn_V80202J_CANCEL = get_cmp_btn1("取消", "btn_V80202J_CANCEL", 1, "", cmp_btn_V80202J_CANCEL);
    function cmp_btn_V80202J_CANCEL(me, e, eOpts) {
        me.up("window").close();
        me.up("window").destroy();        
    } // end of click

    var Sub2_Btns = [
        { xtype: 'panel', flex: 1 },// end of  虛 space
        cmp_btn_V80202J_OK,
        cmp_btn_V80202J_CANCEL,        
        { xtype: 'panel', flex: 1 },// end of  虛 space
    ];

    console.log(" 4-1 Tmp_mySubForm of window F16V報工現況匯出");

    var win = getMyWindow("F16V工單進度", J_formFields_Sub2, Sub2_Btns);
    console.log(" 4-2 Tmp_mySubForm of window F16V報工現況匯出");
    var Tmp_mySubForm = Ext.getCmp("mySubForm");
    console.log("Tmp_mySubForm of window F16V報工現況匯出", Tmp_mySubForm);
    //Tmp_mySubForm.layout = "{ xtype: 'vbox', align: 'stretch' }";
    //將現有機號加入  ckboxgrp1
    AddASN(win);     

    //function  - V80202J
    //將現有 ASN 加入 ckboxgrp1
    function AddASN(par_win) {
        //1>由 mystore1 取得現有機號 store
        console.log("inside AddASN");
        var Tmp_fields = [
            { name: "ACNO_" },  //飛機機號        
        ];

        var Tmp_Store = Ext.create('Ext.data.Store', {
            fields: Tmp_fields,
            autoLoad: false,
            proxy: {
                type: "ajax",
                start: 1,
                page: 1,
                limit: 30,
                async: false,  //必需執行完, 才執行下一步驟
                url: "",
                getMethod: function () { return 'POST'; },
                reader: {
                    type: "json",
                    root: 'T1',
                    totalProperty: 'T1C[0].TOTAL'
                }
            }
        });  // end of Tmp_store;
        var np2 = {};
        Tmp_Store.getProxy().url = '../../api/V80202JAPI/get_ASN';
        Tmp_Store.getProxy().extraParams = np2; //分頁OK,篩選條件OK
        Tmp_Store.reload();
        //2>由 store 每一筆加入 ckboxgrp1
        Tmp_Store.on('load', function () {
            console.log("inside Tmp_Store.onload");
            var Tmp_PageCnt = Tmp_Store.getCount();  //store筆數    
            console.log("Tmp_PageCnt:", Tmp_PageCnt);
            var cur_rec;
            var Tmp_chkboxgrp1 = Ext.getCmp("chkboxgrp1");
            console.log("1 Tmp_chkboxgrp1:", Tmp_chkboxgrp1);
            Tmp_chkboxgrp1.removeAll();
            console.log("2 after Tmp_chkboxgrp1.items.removeAll:", Tmp_chkboxgrp1);
            for (i = 0; i < Tmp_PageCnt; i++) {
                //console.log("3 for(i=0:", i);
                //console.log("更新第 i  筆", i);
                //依目前 store的資料, 更新 AMM_FACDEPD.NWK , PK( DT+DEP+EMPLYID)
                cur_rec = Tmp_Store.getAt(i);
                Tmp_ACNO_ = cur_rec.data["ACNO_"];
                Tmp_ACNO_id = 'checkbox' + Tmp_ACNO_;
                //var Tmp_chkbox = {
                //    xtype: 'checkbox',
                //    boxLabel: Tmp_ACNO_,
                //    name: 'rb',
                //    inputValue: Tmp_ACNO_,
                //    id: Tmp_ACNO_id,
                //};
                var Tmp_chkbox = new Ext.form.Checkbox({
                    xtype: 'checkbox',
                    boxLabel: Tmp_ACNO_,
                    name: 'rb',
                    inputValue: Tmp_ACNO_,
                    id: Tmp_ACNO_id,
                    width: 70,
                });
                Tmp_chkboxgrp1.items.add(Tmp_chkbox);
            }  // end  for (i=0;)
            //console.log("4 after for(i=0:", i);        
            //console.log("5 before Ext.getCmp('chkboxgrp1').updateLayout();");
            Ext.getCmp('chkboxgrp1').updateLayout();
            //console.log("6 after Ext.getCmp('chkboxgrp1').updateLayout();");
            Ext.getCmp('chkboxgrp2').updateLayout();
            //console.log("7 after Ext.getCmp('chkboxgrp2').updateLayout();");
            par_win.width = 600;
            par_win.height = 300;
            par_win.y = 100;
            par_win.show();
        });  // end of Tmp_Store.on('load', function () {

    }  // end of AddASN();



    //[F16V工單進度].[確認]鈕 , 處理
    //function Ok_process_sub2(me, e, eOpts) {
    function V80202J_Ok(me, e, eOpts) {
        console.log(" 1.1 inside V80202J_Ok");
        console.log(" me: ", me);

        var Tmp_Str = "";

        //在 chkboxgrp2
        var selectedValues = Ext.getCmp('chkboxgrp2').items;
        console.log(selectedValues);
        var Tmp_ASNAry = [];  //var Tmp_Obj={};
        //chkboxgrp2 均設為 true
        for (var i = 0; i < selectedValues.length; i++) {
            console.log("selectedValues.items[i].value", selectedValues.items[i].value);
            console.log("selectedValues.items[i].getValue()", selectedValues.items[i].getValue());
            selectedValues.items[i].setValue(true);
        };
        var np = {};
        //取得 chkboxgrp2 的勾選欄位值 
        //Array , Object 傳至後端,必需先  JSON.stringify
        //np["s_VRCODE"] = Ext.getCmp('s_VRCODE').getValue();
        np["ASN_ARY"] = Ext.getCmp('chkboxgrp2').getValue();
        //np["ASN_ARY_rb"] = Ext.getCmp('rb').getValue();
        console.log("Ext.getCmp('chkboxgrp2').getValue(): ", Ext.getCmp('chkboxgrp2').getValue());
        console.log("Ext.getCmp('chkboxgrp2').getValue()['rb']: ", Ext.getCmp('chkboxgrp2').getValue()["rb"]);
        //將 Array 轉成  JSON字串, 以便傳至後端
        var Tmp_JSONStr = JSON.stringify(Ext.getCmp('chkboxgrp2').getValue()["rb"]);
        console.log("0 Tmp_JSONStr: ", Tmp_JSONStr);
        //若只選1個checkbox,則Ext.getCmp('chkboxgrp2').getValue()["rb"] , 傳回字串  "A026"
        //若只選2個checkbox,則Ext.getCmp('chkboxgrp2').getValue()["rb"] , 傳回Array   ["A012","A026"]
        if (Tmp_JSONStr.indexOf("[", 0) == -1) {
            Tmp_JSONStr = "[" + Tmp_JSONStr + "]";
        }
        console.log("1 Tmp_JSONStr: ", Tmp_JSONStr);
        np["ASN_ARY_JSONStr"] = Tmp_JSONStr;
        console.log("np['ASN_ARY_JSONStr']: ", np["ASN_ARY_JSONStr"]);

        console.log("0 np:", np);
        //np["ASN_ARY"] = Tmp_ASNAry;    
        np["FName"] = "F16V現況報工匯出.xlsx";
        console.log("np:", np);
        console.log("FName: ", np.FName);
        //EX_DFile : cookies, 傳回訊息  - 因傳回檔案不可用 HttpMessage , 所以用 Cookie 傳訊息
        //f_downloadFile 函式會自已產生 Form  & submit , 並不會帶本子視窗畫面的 欄位值(Ex: chkboxgroup2)
        f_downloadFile('EX_DFile', '../api/V80202BAPI/F16V_ALS_OUT', np, 'POST', function () {
            var r = r_cookies('EX_DFile');
            if (!checkisnull(r))
                mysuccessalert(r);
        });
    };  // end of Ok_process() {  // F16V報工現況匯出.確定

    function cmp_btn_right_ok() {
        var selectedValues = Ext.getCmp('chkboxgrp1').getChecked();
        console.log(selectedValues);
        for (var i = 0; i < selectedValues.length; i++) {
            Ext.getCmp('chkboxgrp1').remove(selectedValues[i]);
            var tempObj = new Ext.form.Checkbox(selectedValues[i]);
            Ext.getCmp('chkboxgrp2').items.add(tempObj);
        }
        Ext.getCmp('chkboxgrp1').updateLayout();
        Ext.getCmp('chkboxgrp2').updateLayout();
    };

    function cmp_btn_left_ok() {
        var selectedValues = Ext.getCmp('chkboxgrp2').getChecked();
        console.log(selectedValues);
        for (var i = 0; i < selectedValues.length; i++) {
            Ext.getCmp('chkboxgrp2').remove(selectedValues[i]);
            var tempObj = new Ext.form.Checkbox(selectedValues[i]);
            Ext.getCmp('chkboxgrp1').items.add(tempObj);
        }
        Ext.getCmp('chkboxgrp1').updateLayout();
        Ext.getCmp('chkboxgrp2').updateLayout();
    };

    function cmp_btn_allright_ok() {
        //將 chkboxgrp1.checkbox 均設為 true
        var selectedValues = Ext.getCmp('chkboxgrp1').items;
        console.log(selectedValues);
        //1>chkboxgrp1 均設為 true
        for (var i = 0; i < selectedValues.length; i++) {
            console.log("selectedValues.items[i].value", selectedValues.items[i].value);
            console.log("selectedValues.items[i].getValue()", selectedValues.items[i].getValue());
            selectedValues.items[i].setValue(true);
        };
        //2>將 checkboxgrp1.已勾選的資料,移至 chkboxgrp2
        selectedValues = Ext.getCmp('chkboxgrp1').getChecked();
        console.log(selectedValues);
        for (var i = 0; i < selectedValues.length; i++) {
            Ext.getCmp('chkboxgrp1').remove(selectedValues[i]);
            var tempObj = new Ext.form.Checkbox(selectedValues[i]);
            Ext.getCmp('chkboxgrp2').items.add(tempObj);
        }
        Ext.getCmp('chkboxgrp1').updateLayout();
        Ext.getCmp('chkboxgrp2').updateLayout();
    }

    function cmp_btn_allleft_ok() {
        var selectedValues = Ext.getCmp('chkboxgrp2').items;
        console.log(selectedValues);
        //1>chkboxgrp1 均設為 true
        for (var i = 0; i < selectedValues.length; i++) {
            console.log("selectedValues.items[i].value", selectedValues.items[i].value);
            console.log("selectedValues.items[i].getValue()", selectedValues.items[i].getValue());
            selectedValues.items[i].setValue(true);
        };
        //2>將 chkboxgrp2 勾選項目,移至 chkboxgrp1
        var selectedValues = Ext.getCmp('chkboxgrp2').getChecked();
        //var selectedValues = Ext.getCmp('chkboxgrp2').items.items;
        console.log("selectedValues:", selectedValues);
        for (var i = 0; i < selectedValues.length; i++) {
            Ext.getCmp('chkboxgrp2').remove(selectedValues[i]);
            var tempObj = new Ext.form.Checkbox(selectedValues[i]);
            Ext.getCmp('chkboxgrp1').items.add(tempObj);
        }
        Ext.getCmp('chkboxgrp1').updateLayout();
        Ext.getCmp('chkboxgrp2').updateLayout();
    }


};  // end of  function  Call_V80202J() {





2024年9月13日 星期五

V80202H – QDR資料查詢 - IDF且M20 直接連 SQLServer資料(connectionString – QDR_IDF,QDR_TP)

 目的: V80202H - QDR資料查詢 -直接連 SQLServer資料庫,顯示資料

處理說明: 1>connectionString - web.config
<add name="QDR_IDF" connectionString="Data Source=194.1.5.222;
Initial Catalog=qdr_idf;User ID=ammuser;Password=useramm; " />    
<add name="QDR_TP" connectionString="Data Source=192.30.15.129;
Initial Catalog=task_planning;User ID=ammuser;Password=useramm; " />   
  
              2>取得 SQLServer ds : - getDataTable_MSSQL(dblink,Tmp_Sql);
                   - SQLServer - From (  )  A2  - 必需有名稱(xx) , 否則 SQL 會錯
 string Tmp_Sql = " SELECT   RNK,project_code, sor_no ,  "
                          + " FROM   (SELECT  dense_rank()  over( order by  sor_no,ref_document ) as RNK,"
                                                  + " project_code, sor_no , "
                                          + "  FROM   AMM_VIEW  "
                                         + "  WHERE  1=1  ";
            if (!myfunc.checkisnull(Tmp_SAPNO))
            {
                Tmp_Sql = Tmp_Sql + " AND  ref_document = " + myfunc.AA(Tmp_SAPNO);
            }
            Tmp_Sql = Tmp_Sql + ")  A2";
            cmd.CommandText = Tmp_Sql;
            string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")  C2";     
            //public dynamic getDataTable_MSSQL(string iDBLINK, string sql, string countSQL = "",)
            DataSet ds = getDataTable_MSSQL("QDR_TP", Tmp_Sql, countSql);
            return ds;