目的: V20301 - 分頁勾選保留 – 新Template – CHECK – 並將勾選資料傳至後端 - 2
處理說明: 1>宣告 Array : PK_LIST & ALL_LIST , 儲存 PK & 所有欄位值
2>J_columns - 新增 [CHECK]欄位
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[]
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);
}
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"},
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); // [發工人員姓名]
}
{ 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
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
沒有留言:
張貼留言