顯示具有 多選 標籤的文章。 顯示所有文章
顯示具有 多選 標籤的文章。 顯示所有文章

2022年10月4日 星期二

V20301 – checkboxGroup – 多選 -

目的: V20301 – checkboxGroup – 多選   處理

處理說明: 1>checkboxGroup – 多選  
                                     - 前端:欄位值 Array         
                                    - 後端 :欄位值以 , 分隔
                   2>顯示資料 , 必需單獨讀取  checkbox 的欄位值
                            np["s_STATFM"] = Ext.getCmp('s_STATFM').getValue();


1>*.js
 {
                        xtype: 'button',
                        id: 'btn_Show',
                        flex: 2,
                        border: 1,
                        text: '資料顯示',
                        iconCls: 'icon-search',
                        handler: function () {
                            var np = s_JSON('s_form'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞
                            console.log("Ext.getCmp('s_STATFM') : ", Ext.getCmp('s_STATFM'));
                            np["s_STATFM"] = Ext.getCmp('s_STATFM').getValue();
                           //若同時勾選[v]已發工[v]已完工 , 則欄位值 Array of  :  ['B','H']
                            console.log(" np[s_STATFM]  : ", np["s_STATFM"]);    
                            var Proc_Msg;
                            try {
                                 Proc_Msg = new Ext.LoadMask(Ext.getCmp("s_PROCMSG"),
                                    { msg: '交修件資料顯示處理中, 請稍候...', }
                                );
                                Proc_Msg.show();//使用 mask 需手動呼叫show() 方法下
                                //getGridData_M --> 轉工只有曾在於工作中心就會列入  , 後來改為  [目前工作中心]=xxxx , 才顯示
                                //gridstore.getProxy().url = '../api/V80205API/getGridData_M';

                                //2022/06/15 ..過濾條件若[目前工作中心]有值,則過濾 [目前工作中心]=xxxx, 其他 工作中心資料不顯示
                                // url 改為 getGridData_M_sub_WC --> 同 [過濾目前工作中心]鈕,的處理方法 ,                                 
                                gridstore.getProxy().url = '../api/V20301API/getGridData_M';
                                gridstore.getProxy().extraParams = np; //分頁OK,篩選條件OK
                                console.log("1 reloadGridData - before");
                                Ext.getCmp('grid_Single').reloadGridData();
                                console.log("2 reloadGridData - after");
                            }
                            finally {
                                Proc_Msg.hide();  //使用 mask 需手動呼叫hide() 方法下
                            }

                        }
                    },  // end of 顯示資料
                   


 {
                        xtype: 'panel',
                        id: 'panel14',
                        layout: { type: 'vbox', align: 'stretch' },
                        //layout: { type: 'vbox'},
                        flex: 14,
                        border: 0,
                        items: [
                            {
                                xtype: 'checkboxgroup', fieldLabel: '單況', labelWidth: 40, layout: 'vbox',
                                id: 's_STATFM',
                                items: [
                                    {
                                        boxLabel: '已發工',
                                        name: 's_STATFM',
                                        inputValue: 'B',
                                        //id: 's_checkbox1'
                                    }, {
                                        boxLabel: ' 已完工',
                                        name: 's_STATFM',
                                        inputValue: 'H',                                                                                
                                    }, 
                                ]
                            }, // end of s_交修單單況    


2>*.cs

[HttpPost]
        public dynamic getGridData_M()
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            //DataSet ds = getGridDataPage();
            //return ds;
            //Panel11
            string Tmp_FMNO = nvc["s_FMNO"];
            string Tmp_OGONOAF = nvc["s_OGONOAF"];
            string Tmp_NGONOAF = nvc["s_NGONOAF"];
            string Tmp_RPNOAF = nvc["s_RPNOAF"];
            string Tmp_MRPNOAF = nvc["s_MRPNOAF"];

            //Panel12
            string Tmp_PN = nvc["s_PN"];
            string Tmp_NSN = nvc["s_NSN"];
            string Tmp_EIAC_CUS = nvc["s_EIAC_CUS"];
            string Tmp_C_NM = nvc["s_C_NM"];
            string Tmp_ES_NM = nvc["s_ES_NM"];

            //Panel13
            string Tmp_WBSNO = nvc["s_WBSNO"];
            string Tmp_SEQOAF = nvc["s_SEQOAF"];
            string Tmp_FACWC = nvc["s_FACWC"];
            string Tmp_MCODE = nvc["s_MCODE"];
            string Tmp_BTDT1 = "";
            string Tmp_BTDT2 = "";
            if (!myfunc.checkisnull(nvc["s_BTDT1"]))
            {
                Tmp_BTDT1 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_BTDT1"]));
            };
            if (!myfunc.checkisnull(nvc["s_BTDT2"]))
            {
                Tmp_BTDT2 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_BTDT2"]));
            };

            //Panel14            
            string Tmp_STATFM = nvc["s_STATFM"];


            OracleCommand cmd = new OracleCommand();
            string Tmp_Sql1 = "";  //for 日期起迄
            string Tmp_Sql = "  SELECT  RNK, "
                                        + "  FMNO,WBSNO ,FRTP,PN,C_NM,ES_NM,NSN,RQTYAF,SEQOAF,PROID ,CDCODE,EONO,OSM,DTSOR,ISSN,EIAC_CUS,RBTHAF,FACWC,MTEMPLYID,FRNOAF,PAMMNO,SAPREMARK,REMARK,"
                                        + " OGONOAF ,NGONOAF ,RPNOAF ,MRPNOAF ,PRNRAF,CRNRAF,NRCLAF,FREDTAF,PJDT,DLEMPLYID,CREMPLYID,QDRNO,BTDT,MDDT,CSTNM,NEMPID,LGROUP,CRNO,MCODE,ENGP,STATFM,AMMNO,TYPEAF,OPHR "
                                        + "  FROM   ( SELECT  dense_rank()  over(order by  FMNO) as RNK,"
                                                         + "  FMNO,WBSNO ,FRTP,PN,C_NM,ES_NM,NSN,RQTYAF,SEQOAF,PROID ,CDCODE,EONO,OSM,DTSOR,ISSN,EIAC_CUS,RBTHAF,FACWC,MTEMPLYID,FRNOAF,PAMMNO,SAPREMARK,REMARK,"
                                                         + " OGONOAF ,NGONOAF ,RPNOAF ,MRPNOAF ,PRNRAF,CRNRAF,NRCLAF,FREDTAF,PJDT,DLEMPLYID,CREMPLYID,QDRNO,BTDT,MDDT,CSTNM,NEMPID,LGROUP,CRNO,MCODE,ENGP,STATFM,AMMNO,TYPEAF,OPHR "
                                                        + "   FROM     AMM_FM  A "
                                                       + "   WHERE  1=1 "
                                                       + "   AND        STATFM IN ('A','B','H')  ";
            //panel11
            //系統件單號
            if (!myfunc.checkisnull(Tmp_FMNO))
            {
                Tmp_Sql = Tmp_Sql + " AND    FMNO  LIKE  " + myfunc.AA("%" + Tmp_FMNO + "%");
            };
            //拆檢提領編號
            if (!myfunc.checkisnull(Tmp_OGONOAF))
            {
                Tmp_Sql = Tmp_Sql + " AND    OGONOAF  LIKE  " + myfunc.AA("%" + Tmp_OGONOAF + "%");
            };
            //維修提領編號
            if (!myfunc.checkisnull(Tmp_NGONOAF))
            {
                Tmp_Sql = Tmp_Sql + " AND    NGONOAF  LIKE  " + myfunc.AA("%" + Tmp_NGONOAF + "%");
            };
            //拆檢交修單號
            if (!myfunc.checkisnull(Tmp_RPNOAF))
            {
                Tmp_Sql = Tmp_Sql + " AND    RPNOAF  LIKE  " + myfunc.AA("%" + Tmp_RPNOAF + "%");
            };
            //維修交修單號
            if (!myfunc.checkisnull(Tmp_MRPNOAF))
            {
                Tmp_Sql = Tmp_Sql + " AND    MRPNOAF  LIKE  " + myfunc.AA("%" + Tmp_MRPNOAF + "%");
            };


            //panel12
            //件號  
            if (!myfunc.checkisnull(Tmp_PN))
            {
                Tmp_Sql = Tmp_Sql + " AND    PN  LIKE  " + myfunc.AA("%" + Tmp_PN + "%");
            };
            //料號
            if (!myfunc.checkisnull(Tmp_NSN))
            {
                Tmp_Sql = Tmp_Sql + " AND    NSN  LIKE  " + myfunc.AA("%" + Tmp_NSN + "%");
            };
            //機種
            if (!myfunc.checkisnull(Tmp_EIAC_CUS))
            {
                Tmp_Sql = Tmp_Sql + " AND    EIAC_CUS  LIKE  " + myfunc.AA("%" + Tmp_EIAC_CUS + "%");
            };

            //中文名稱
            if (!myfunc.checkisnull(Tmp_C_NM))
            {
                Tmp_Sql = Tmp_Sql + " AND   C_NM  LIKE " + myfunc.AA("%" + Tmp_C_NM + "%");
            };
            //英文簡稱
            if (!myfunc.checkisnull(Tmp_ES_NM))
            {
                Tmp_Sql = Tmp_Sql + " AND   ES_NM LIKE " + myfunc.AA("%" + Tmp_ES_NM + "%");
            };


            //panel13
            //WBS
            if (!myfunc.checkisnull(Tmp_WBSNO))
            {
                Tmp_Sql = Tmp_Sql + " AND   WBSNO LIKE " + myfunc.AA("%" + Tmp_WBSNO + "%");
            };
            //序號
            if (!myfunc.checkisnull(Tmp_SEQOAF))
            {
                Tmp_Sql = Tmp_Sql + " AND   SEQOAF LIKE " + myfunc.AA("%" + Tmp_SEQOAF + "%");
            };
            //FACWC
            if (!myfunc.checkisnull(Tmp_FACWC))
            {
                Tmp_Sql = Tmp_Sql + " AND   FACWC LIKE " + myfunc.AA("%" + Tmp_FACWC + "%");
            };
            //MCODE
            if (!myfunc.checkisnull(Tmp_MCODE))
            {
                Tmp_Sql = Tmp_Sql + " AND    MCODE  =  " + myfunc.AA(Tmp_MCODE);
            };
            //建檔日期 - 起  - 迄
            if ((!myfunc.checkisnull(Tmp_BTDT1)) || (!myfunc.checkisnull(Tmp_BTDT2)))
            {
                if (!myfunc.checkisnull(Tmp_BTDT1))
                {
                    Tmp_Sql1 = Tmp_Sql1 + "  AND        BTDT>=" + myfunc.AA(Tmp_BTDT1);
                };
                if (!myfunc.checkisnull(Tmp_BTDT2))
                {
                    Tmp_Sql1 = Tmp_Sql1 + "  AND        BTDT<=" + myfunc.AA(Tmp_BTDT2);
                }
                Tmp_Sql = Tmp_Sql + Tmp_Sql1;
            };


            //panel15
            //單況現況 - checkboxgroup
            if (!myfunc.checkisnull(Tmp_STATFM))
            {
                switch (Tmp_STATFM)
                {
                    case "B":  //已發工
                        //Tmp_Sql = Tmp_Sql + "AND   STATFM IN ('B','C','D','E','F','G') ";
                        Tmp_Sql = Tmp_Sql + " AND   AMMNO IN ( SELECT AMMNO FROM  AMM_SRO WHERE   AMMNO=A.AMMNO AND   SAPNO IS NOT NULL ) ";
                        break;
                    case "H":  //已完工
                        Tmp_Sql = Tmp_Sql + " AND   AMMNO IS NOT NULL  AND  STATFM ='H'   ";
                        break;
                    case "B,H":  //已發工 & 已完工均勾選
                        Tmp_Sql = Tmp_Sql 
                                         + " AND (         (AMMNO IS NOT NULL  AND  STATFM ='H')   "
                                        +      "     AND   (AMMNO IN ( SELECT AMMNO FROM  AMM_SRO WHERE   AMMNO=A.AMMNO AND   SAPNO IS NOT NULL ) )" 
                                                            +        " )";   
                        break;
                }
            };

            Tmp_Sql = Tmp_Sql + ")";

            cmd.CommandText = Tmp_Sql;
            string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")";
            DataSet ds = getDataTable(cmd, countSql, true, true);



            //新增  CaluField 欄位  - [工單類別]            
            Tmp_Sql = " SELECT   SROTP as FRTP, SROTPNAME  "
                            + "  FROM      AMM_SROTP "
                            + "   WHERE   1=1  ";
            getKeyCode("FRTP", ref ds, Tmp_Sql);

            //新增  CaluField 欄位  - [維修人員姓名]
            Tmp_Sql = " SELECT   EMPLYID as MTEMPLYID, EMPLYNM  "
                                        + "  FROM      HR_EMPLYM ";
            getKeyCode("MTEMPLYID", ref ds, Tmp_Sql);
            //新增  CaluField 欄位  - [發工人員姓名]
            Tmp_Sql = " SELECT   EMPLYID as DLEMPLYID, EMPLYNM  "
                                        + "  FROM      HR_EMPLYM ";
            getKeyCode("DLEMPLYID", ref ds, Tmp_Sql);
            //新增  CaluField 欄位  - [管制人員姓名]
            Tmp_Sql = " SELECT   EMPLYID as CREMPLYID, EMPLYNM  "
                                        + "  FROM      HR_EMPLYM ";
            getKeyCode("CREMPLYID", ref ds, Tmp_Sql);
            //新增  CaluField 欄位  - [工程人員姓名]
            Tmp_Sql = " SELECT   EMPLYID as ENGP, EMPLYNM  "
                                        + "  FROM      HR_EMPLYM ";
            getKeyCode("ENGP", ref ds, Tmp_Sql);
            //新增  CaluField 欄位  - [專案人員姓名]
            Tmp_Sql = " SELECT   EMPLYID as NEMPID, EMPLYNM  "
                            + "  FROM      HR_EMPLYM ";
            getKeyCode("NEMPID", ref ds, Tmp_Sql);

            //新增  CaluField 欄位  - [FM單況 ]
            getKeyCode("STATFM", ref ds);
            //新增  CaluField 欄位  - [保固構改管制碼 ]
            getKeyCode("MCODE", ref ds);

            //新增  CaluField 欄位  - [約別 ]
            getKeyCode("TYPEAF", ref ds);


            return ds;

        }  // end of GetGridData_M()