2023年7月23日 星期日

V20301 - [全部選取] - 分頁勾選保留 -New - PK_LIST, ALL_LIST -[確認轉發工]鈕 -將勾選資料傳至後端,處理選擇的資料

 目的: V20301 - 分頁勾選保留 Template – CHECK – 並將勾選資料傳至後端 - 2

處理說明:    1>宣告 Array  :     PK_LIST    &     ALL_LIST , 儲存  PK  & 所有欄位值 
                                        2>J_columns  -  新增 [CHECK]欄位
                                           1>>勾選時, 將 PK 及  目前欄位值加入   PK_LIST &  ALL_LIST
                                           2>>未勾選時, 將 PK 及  目前欄位值自   PK_LIST &  ALL_LIST      移除                               
                                          3>[確定轉發工]鈕, 將目前勾選的資料(ALL_LIST), 送至後端
                    2>*.cs
                         public dynamic getGridData_M(bool par_paging = true)
                          {

                                 //DataSet ds = getDataTable(cmd, countSql);    -原本無 par_paging 參數
                                 DataSet ds = getDataTable(cmd, countSql, par_paging, true);
                                 }


1>*_JSON.js

Ext.define('CHK_PK_OBJ', {
           PK_LIST: [], //儲存 PK欄位.欄位值
          ALL_LIST:[], //儲存所有欄位.欄位值
});
var CHK_PK_OBJ = Ext.create('CHK_PK_OBJ');

//勾選 /未勾選 - 處理 PK_LIST[] & ALL_LIST[]
var J_columns = [
{ header: "", xtype: "rownumberer", width: 50, align: "center", sortable: false },
{
//2023/07/14 microed , 將 V120201 改成 雅嵐版本 - 分頁勾選
header: "勾選",
dataIndex: "CHECK", width: 40, xtype: 'checkcolumn', menuDisabled: true, sortable: false,
//rec : 目前資料欄位值
renderer: function (value, metadata, rec, rowIndex, colIndex, store) {
//var item = record.get('PROM_ID') + '&' + record.get('CR_NO') + '&' + record.get('ITEM_NO');
console.log("renderer rec:", rec);
console.log("renderer rec.data:", rec.data);
var Tmp_PK = rec.get('FMNO');
var chkd = '';
                        //若勾選,則加入 PK_LIST[] & ALL_LIST[]
if (rec.get('CHECK') === true) {
if (CHK_PK_OBJ.PK_LIST.indexOf(Tmp_PK) == -1) {
CHK_PK_OBJ.PK_LIST.push(Tmp_PK);
CHK_PK_OBJ.ALL_LIST.push(rec.data);
}
chkd = 'checked';
rec.set('CHECK', true);
}
                        //若未勾選,則由 PK_LIST[] & ALL_LIST[]移除 
else if (rec.get('CHECK') === false) {
rec.set('CHECK', false);
//將本Tmp_PK ,由 Array 中移除 , 所以不會有 空字串, 空 Object
CHK_PK_OBJ.PK_LIST = jQuery.grep(CHK_PK_OBJ.PK_LIST, function (value) {
return value != Tmp_PK;
});
CHK_PK_OBJ.ALL_LIST = jQuery.grep(CHK_PK_OBJ.ALL_LIST, function (item) {
return item.FMNO != Tmp_PK;
});
}
else if (typeof rec.get('CHECK') === "undefined") { //往上或下一頁
if (CHK_PK_OBJ.PK_LIST.indexOf(Tmp_PK) > -1) {
chkd = 'checked';
if (CHK_PK_OBJ.PK_LIST.indexOf(Tmp_PK) == -1) {
CHK_PK_OBJ.PK_LIST.push(Tmp_PK);
CHK_PK_OBJ.ALL_LIST.push(rec.data);
}
rec.set('CHECK', true);
} else {
rec.set('CHECK', false);
}
}
var cbx = "<input  type='checkbox'  "
+ chkd + " > ";
return cbx;
},
},
{header:"系統件單號",dataIndex:"FMNO",width:130,TMType:"string"},


1.5>[全部選擇]鈕
  var BtnAry = [
        '-', { xtype: 'label', text: '', width: 50 },
        { //2023/07/14 microed , 將 V120201 改成 雅嵐版本 - 分頁勾選
            xtype: 'button', text: '全部選取', id: 'SelAllBtn', iconCls: 'icon-check',
            listeners: {
                click: function () {
                    //SelAllBtn_click();                    
                    Ext.getCmp('grid_Single').store.each(function (rec) {
                        rec.set('CHECK', true);
                    });
                    var np = s_JSON('s_form'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞                          
                    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();
                    //將 所有資料.PK 加入 CHK_PK_OBJ.PK_LIST
                    Ext.Ajax.request({
                        url: '../api/V80403API/getGridData_M?par_paging=false',
                        method: 'POST',
                        //params: { all: 1 },
                        params: np ,
                        async: false, //將非同步功能關閉
                        failure: function (response, opts) {
                        },
                        success: function (response, opts) {
                            CHK_PK_OBJ.PK_LIST = [];
                            var obj = Ext.decode(response.responseText);
                            obj.T1.forEach(function (item, i) {
                                CHK_PK_OBJ.PK_LIST.push(item['FMNO']);
                                CHK_PK_OBJ.ALL_LIST.push(item);
                            });
                        }
                    });
                }
            }
        }, //end of 全部選取

2>*.cs  - par_paging =false  處理

public dynamic getGridData_M(bool par_paging = true)
{

            //DataSet ds = getDataTable(cmd, countSql);
            DataSet ds = getDataTable(cmd, countSql, par_paging, true);

            //若按[全部選取]鈕(par_paging==false), 則不取計算欄位
            if (par_paging == false)
            {
                return ds;
            }
          
              //新增  CaluField 欄位  - [發工人員姓名]            
            Tmp_Sql = " SELECT   EMPLYID as DLEMPLYID, EMPLYNM  "
                             + "  FROM      HR_EMPLYM ";
            getKeyCode("DLEMPLYID", ref ds, Tmp_Sql);   // [發工人員姓名]    
}

2>[確認轉發工]鈕 - 將勾選的資料,送至後端處理
{ xtype: 'button', text: '確認轉發工', id: 'ConfirmBtn',
listeners: {
click: function () {
        FM2AMM();
}}},
//[確認轉發工]
    function FM2AMM()
    {
        //2023/07/18 microed , 改成[分頁勾選保留] CHECK  方式 , 不用 selectionModel() 方式 
        if (CHK_PK_OBJ.PK_LIST.length == 0) {
            mywarnalert("請先選擇要除帳的資料");
            return false;
        }
            var gridstore = Ext.getCmp('grid_Single').store;
            var Tmp_Msg = "確定將勾選的資料轉發工嗎?";
            Ext.Msg.confirm('確認', Tmp_Msg, callBackFunc);
        function callBackFunc(id) {

            console.log("1 callBackFunc : 確定將勾選的資料轉發工嗎?");
            if (id == 'yes') {
                console.log("CHK_PK_OBJ.PK_LIST.length:", CHK_PK_OBJ.PK_LIST.length);
                var Tmp_DataAry = [];
                var isOk = true;
                var np = {};
                var Tmp_Str = "";
                console.log("CHK_PK_OBJ.ALL_LIST:", CHK_PK_OBJ.ALL_LIST);
                for (let i = 0; i <= CHK_PK_OBJ.PK_LIST.length - 1; i++) {
                    cur_rec = CHK_PK_OBJ.ALL_LIST[i];
                    console.log("cur_rec:", cur_rec);
                    console.log("CHK_PK_OBJ.ALL_LIST[i]:", CHK_PK_OBJ.ALL_LIST[i]);
                    console.log("cur_rec.STATFM.toString():", cur_rec.STATFM.toString());
                    if (cur_rec.STATFM.toString() != "A") {
                        Tmp_Str = "交修件單號(" + cur_rec.FMNO.toString() + ")資料已轉待發工<br> "
                            + "請點選[複製]鈕, 建立資料<br>";
                        mywarnalert(Tmp_Str);
                        return;
                    }
                    Tmp_DataAry.push(cur_rec);
                } //  end of for (let i=0,)                
                // 將目前子畫面的資料(Table)轉成 JSON字串
                var Tmp_DataStr = JSON.stringify(Tmp_DataAry);
                console.log("Tmp_DataStr:", Tmp_DataStr);
           //詢問  "此筆資料來源為 AMM,請問是否將[拆檢交修單號(RPNOAF)]異動為 [AMM單號]?
                var Tmp_isRPNOAF2AMMNO = "false";
                var Tmp_Msg = "此筆資料來源為 AMM<br>"
                    + "請問是否將[拆檢交修單號(RPNOAF)]異動為 [AMM單號] ? <br>";
                Ext.Msg.confirm('詢問', Tmp_Msg, callBackFunc1);
                function callBackFunc1(id) {
                    console.log("2 callBackFunc1 : 此筆資料來源為 AMM, 請問是否將[拆檢交修單號(RPNOAF)]異動為 [AMM單號] ?");
                    if (id == 'yes') {
                        Tmp_isRPNOAF2AMMNO = "true";
                    }
                    var np = {};
                    np = {
                        DataStr: Tmp_DataStr,
                        isRPNOAF2AMMNO: Tmp_isRPNOAF2AMMNO,
                    };
                    Ext.Ajax.request({
                        method: "POST",
                        url: '../../api/V20301API/FM2AMM',
                        params: np,
                        //params: Ary_np,
                        async: false,
                        success: function (response, opts) {
                            console.log("0 response.responseText=", response.responseText);
                            var Tmp_Obj = Ext.decode(response.responseText);
                            console.log("1  Tmp_Obj=", Tmp_Obj);
                            if (Tmp_Obj["success"] == true) {
                                mysuccessalert("確認轉發工成功!!");
                                //資料更新完成, 重新顯示資料
                                Ext.getCmp("btn_Show").fireHandler();
                            }
                            else {
                                var Tmp_Rtn_Msg = "[轉發工]失敗!! <br>"
                                    + "請檢核<br> "
                                    + Tmp_Obj["Rtn_Msg"];
                                mywarnalert(Tmp_Rtn_Msg);
                                isOk = false;
                            }
                        },  //end of success                
                        failure: function (response, opts) {
                            var Tmp_Obj = Ext.decode(response.responseText);
                            var Tmp_Rtn_Msg = "[轉發工]失敗!! <br>"
                                + "請檢核<br>"
                                + Tmp_Obj["Rtn_Msg"];
                            mywarnalert(Tmp_Rtn_Msg);
                            isOk = false;
                        }
                    })  //end of Ext.Ajax.Request                            
                }  // end of callbackfunc1
            }  // end    if (id == 'yes')           // end of 確定轉發工      
        }// end of callBackFunc
    }  // end of  FM2AMM



沒有留言:

張貼留言