目的: V20304 – 拆檢結果登錄 – [全部選取][全部取消]鈕 - New
處理說明: 1> 利用 PK_LIST & ALL_LIST 儲存選取的 PK & 所有欄位值
PK_LIST: [], //儲存選項's的 PK欄位值
ALL_LIST: [], //儲存選項's的所有欄位值
PK_LIST: [], //儲存選項's的 PK欄位值
ALL_LIST: [], //儲存選項's的所有欄位值
2> 按[全部選取]鈕
1>>將目前頁面的資料設為[V] 勾選
Ext.getCmp('grid_M').store.each(function (rec) {
rec.set('CHECK', true);
});
2>>將所有資料的 PK 存入 PK_LIST[ ] , & 所有欄位值存入 ALL_LIST[ ]
--> getGridData_M?par_paging 設為 false;
3> column["CHECK"] - 勾選/不勾選時(renderer時), 判斷要加入or移除 PK_LIST
4>*.cs - getGridData_M 新增 par_paging 參數
public dynamic getGridData_M(bool par_paging = true)
1>> 利用 PK_LIST & ALL_LIST 儲存選取的 PK & 所有欄位值
Ext.define('CHK_PK_OBJ', {
PK_LIST: [], //儲存選項's的 PK欄位值
ALL_LIST: [], //儲存選項's的 所有欄位值
});
var CHK_PK_OBJ = Ext.create('CHK_PK_OBJ');
2>>勾選時, 判斷要加入/移除 PK_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 Tmp_PK = rec.get('FMNO');
var chkd = '';
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);
}
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 (item) {
return item != 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, sortable: false, TMType: "string" },
3>> 按[全部選取]鈕
function btn_SelAll_click() {
//1>>目前頁面的資料 [勾選]
Ext.getCmp('grid_M').store.each(function (rec) {
rec.set('CHECK', true);
});
//2>>將 所有資料.PK 加入 PK_LIST[]
Ext.Ajax.request({
url: '../api/V20304API/getGridData_M?par_paging=false',
method: 'POST',
params: { all: 1 },
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);
});
}
});
}
2>*.cs
[HttpPost]
public dynamic getGridData_M(bool par_paging = true)
{
var c = HttpContext.Current;
NameValueCollection nvc = c.Request.Form;
//Panel11
string Tmp_FMNO = nvc["s_FMNO"];
string Tmp_AMMNO = nvc["s_AMMNO"];
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_WBSNO = nvc["s_WBSNO"];
string Tmp_PN = nvc["s_PN"];
string Tmp_SAPNO = nvc["s_SAPNO"];
string Tmp_FACWC = nvc["s_FACWC"];
//發工日期起~迄
string Tmp_SAPDT1 = "";
string Tmp_Str = "";
if (!myfunc.checkisnull(nvc["s_SAPDT1"]))
{
Tmp_SAPDT1 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_SAPDT1"]));
};
string Tmp_SAPDT2 = "";
if (!myfunc.checkisnull(nvc["s_SAPDT2"]))
{
Tmp_SAPDT2 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_SAPDT2"]));
};
//Panel14 - 登錄否
string Tmp_OPHR = nvc["s_OPHR"]; //異動原因
////將 A,C,B,D,ALL 字串加入 "" --> "A","B","C","D" , 不含 ALL 傳回
//if (!myfunc.checkisnull(Tmp_OPHR))
//{
// Tmp_OPHR = myfunc.AddQuoteStr(Tmp_OPHR);
//}
//Panel14 - 子工單 Checked - SUB_SAPNO
string Tmp_SUB_SAPNO = nvc["s_SUB_SAPNO"]; //子工單
//Panel15 - 異常處理中 Checked - STATAF
string Tmp_STATAF = nvc["s_STATAF"]; //異常處理中
OracleCommand cmd = new OracleCommand();
string Tmp_Sql = " SELECT RNK,FMNO,AMMNO ,CST_NO ,DTSOR ,OGONOAF ,NGONOAF ,RPNOAF ,MRPNOAF ,WBSNO ,RQTYAF ,C_NM ,ES_NM ,NSN ,PN ,SEQOAF ,EIAC ,WC ,CSTNM ,TYPEAF ,RBTHAF ,FACTAB ,PRNRAF ,CRNRAF ,RSNSAF ,FREDTAF ,OSM ,EONO ,CDCODE ,FRTP ,FRNOAF ,DLEMPLYID ,CREMPLYID ,MTEMPLYID ,PRNRCLAF ,NRCLAF ,QDRNO ,REMARK ,STATFM ,REDTAF ,JCNOAF ,FD350 ,RBNOAF ,NPN ,NNSN ,REFRNOAF ,MB1A ,MB1ADT ,PROID ,LWCNT ,BTDT ,MDDT ,SAPREMARK ,FACWC ,ISSUB ,ISCK ,NEMPID ,MEMPID ,PMNFAF ,RMNFAF ,FRCLDT ,CMNRAF ,DLVDT ,NRCLFM ,CLS ,CSDTFM ,PSREMARK ,FILEBODY ,FILEDATE ,FILENAME ,FILESIZE ,SCHER ,LGROUP ,PM17MT ,ISSN ,REQMAF ,PJOPHR ,EIAC_CUS ,OPHR ,RSRT ,SRU_PARTS ,PDMBOMIN ,FCMPDT ,TEST_CAUSE ,MAINT_STA ,MCODE ,CRNO ,MAINTDT ,ENGP ,PJDT "
+ " FROM ( SELECT dense_rank() over(order by FMNO) as RNK,"
+ " FMNO,AMMNO ,CST_NO ,DTSOR ,OGONOAF ,NGONOAF ,RPNOAF ,MRPNOAF ,WBSNO ,RQTYAF ,C_NM ,ES_NM ,NSN ,PN ,SEQOAF ,EIAC ,WC ,CSTNM ,TYPEAF ,RBTHAF ,FACTAB ,PRNRAF ,CRNRAF ,RSNSAF ,FREDTAF ,OSM ,EONO ,CDCODE ,FRTP ,FRNOAF ,DLEMPLYID ,CREMPLYID ,MTEMPLYID ,PRNRCLAF ,NRCLAF ,QDRNO ,REMARK ,STATFM ,REDTAF ,JCNOAF ,FD350 ,RBNOAF ,NPN ,NNSN ,REFRNOAF ,MB1A ,MB1ADT ,PROID ,LWCNT ,BTDT ,MDDT ,SAPREMARK ,FACWC ,PAMMNO ,ISSUB ,ISCK ,NEMPID ,MEMPID ,PMNFAF ,RMNFAF ,FRCLDT ,CMNRAF ,DLVDT ,NRCLFM ,CLS ,CSDTFM ,PSREMARK ,FILEBODY ,FILEDATE ,FILENAME ,FILESIZE ,SCHER ,LGROUP ,PM17MT ,ISSN ,REQMAF ,PJOPHR ,EIAC_CUS ,OPHR ,RSRT ,SRU_PARTS ,PDMBOMIN ,FCMPDT ,TEST_CAUSE ,MAINT_STA ,MCODE ,CRNO ,MAINTDT ,ENGP ,PJDT "
+ " FROM AMM_FM "
+ " WHERE 1=1 ";
//panel11
//系統件單號 s_FMNO
if (!myfunc.checkisnull(Tmp_FMNO))
{
Tmp_Sql = Tmp_Sql + " AND FMNO= " + myfunc.AA(Tmp_FMNO);
};
//AMM單號 s_AMMNO
if (!myfunc.checkisnull(Tmp_AMMNO))
{
Tmp_Sql = Tmp_Sql + " AND AMMNO= " + myfunc.AA(Tmp_AMMNO);
};
//拆檢提領單號 s_OGONOAF
if (!myfunc.checkisnull(Tmp_OGONOAF))
{
Tmp_Sql = Tmp_Sql + " AND OGONOAF= " + myfunc.AA(Tmp_OGONOAF);
};
//維修提領單號 s_NGONOAF
if (!myfunc.checkisnull(Tmp_NGONOAF))
{
Tmp_Sql = Tmp_Sql + " AND NGONOAF= " + myfunc.AA(Tmp_NGONOAF);
};
//拆檢交修單號 s_RPNOAF
if (!myfunc.checkisnull(Tmp_RPNOAF))
{
Tmp_Sql = Tmp_Sql + " AND RPNOAF= " + myfunc.AA(Tmp_RPNOAF);
};
//維修交修單號 s_MRPNOAF
if (!myfunc.checkisnull(Tmp_MRPNOAF))
{
Tmp_Sql = Tmp_Sql + " AND MRPNOAF= " + myfunc.AA(Tmp_MRPNOAF);
};
//WBS號碼 s_WBSNO
if (!myfunc.checkisnull(Tmp_WBSNO))
{
Tmp_Sql = Tmp_Sql + " AND WBSNO= " + myfunc.AA(Tmp_WBSNO);
};
//承修工場 s_FACWC
if (!myfunc.checkisnull(Tmp_FACWC))
{
Tmp_Sql = Tmp_Sql + " AND FACWC= " + myfunc.AA(Tmp_FACWC);
};
//工單號碼 s_SAPNO
if (!myfunc.checkisnull(Tmp_SAPNO))
{
Tmp_Sql = Tmp_Sql + " AND AMMNO IN ( SELECT AMMNO "
+" FROM AMM_SRO "
+" WHERE SAPNO LIKE " + myfunc.AA(Tmp_SAPNO+"%")
+")";
};
//件號 s_PN
if (!myfunc.checkisnull(Tmp_PN))
{
Tmp_Sql = Tmp_Sql + " AND AMMNO IN ( SELECT AMMNO "
+" FROM AMM_SRO "
+" WHERE PN LIKE " + myfunc.AA(Tmp_PN + "%")
+")";
};
//發工日期 SAPDT
if (!(myfunc.checkisnull(Tmp_SAPDT1) && myfunc.checkisnull(Tmp_SAPDT2)))
{
Tmp_Sql = Tmp_Sql + " AND AMMNO IN ( SELECT AMMNO "
+ " FROM AMM_SRO "
+ " WHERE 1=1 ";
if (!myfunc.checkisnull(Tmp_SAPDT1))
{
Tmp_Sql = Tmp_Sql + " AND trunc(SAPDT)>= " + myfunc.AA(Tmp_SAPDT1) ;
};
if (!myfunc.checkisnull(Tmp_SAPDT2))
{
Tmp_Sql = Tmp_Sql + " AND trunc(SAPDT)<= " + myfunc.AA(Tmp_SAPDT2);
};
Tmp_Sql = Tmp_Sql + ")";
}; // if (!(myfunc.checkisnull(Tmp_UPDDT1) || myfunc.checkisnull(Tmp_UPDDT2)))
//子工單
if (!myfunc.checkisnull(Tmp_SUB_SAPNO))
{
if (Tmp_SUB_SAPNO != "true")
Tmp_Sql = Tmp_Sql + " AND AMMNO NOT LIKE '%-%' ";
}; //end of 管制有效項
//異常處理中
if (!myfunc.checkisnull(Tmp_STATAF))
{
if (Tmp_STATAF == "true")
Tmp_Sql = Tmp_Sql + " AND FMNO IN ( SELECT FMNO "
+ " FROM AMM_SRO "
+ " WHERE FIXNO IN ( SELECT RPNOAF "
+ " FROM CSM_AF@TLS_245 "
+ " WHERE STATAF=" + myfunc.AA("D")
+ ")"
+ ")";
}; //end of //異常處理中
//登錄
/*
未登錄: Y1
品保登錄: Y2
已登錄: N
全部: ALL
*/
if (!myfunc.checkisnull(Tmp_OPHR))
{
switch (Tmp_OPHR)
{
case "Y1": //未登錄
Tmp_Sql = Tmp_Sql + " AND OPHR='Y' AND PM17MT IS NULL ";
break;
case "Y2": //品保登錄中
Tmp_Sql = Tmp_Sql + " AND OPHR='Y' AND PM17MT ='Y' ";
break;
case "N": //已登錄
Tmp_Sql = Tmp_Sql + " AND OPHR='N' ";
break;
case "ALL":
break;
};
};
Tmp_Sql = Tmp_Sql + ")";
cmd.CommandText = Tmp_Sql;
string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")";
//DataSet ds = getDataTable(cmd, countSql); //原本的程式
DataSet ds = getDataTable(cmd, countSql, par_paging, true);
//若按[全部選取]鈕(par_paging==false), 則不取計算欄位
if (par_paging == false)
{
return ds;
}
//新增 CaluField 欄位 - [單況][約別] [送修原因說明]
getKeyCode("STATFM", ref ds);
getKeyCode("TYPEAF", ref ds);
getKeyCode("RSNSAF", ref ds);
getKeyCode("DTSOR", ref ds); //資料來源
ds.Tables["T1"].Columns.Add("SAPNO_", typeof(object)); //SAP工號
ds.Tables["T1"].Columns.Add("PN_", typeof(object)); //件號
ds.Tables["T1"].Columns.Add("SAPDT_", typeof(object)); //發工日期
ds.Tables["T1"].Columns.Add("DLEMPLYID_", typeof(object)); //發工人員
ds.Tables["T1"].Columns.Add("CREMPLYID_", typeof(object)); //管制人員
ds.Tables["T1"].Columns.Add("MTEMPLYID_", typeof(object)); //維修人員
string Tmp_DLEMPLYID, Tmp_DLEMPLYID_;
string Tmp_CREMPLYID, Tmp_CREMPLYID_;
string Tmp_MTEMPLYID, Tmp_MTEMPLYID_;
string Tmp_SAPNO_, Tmp_PN_, Tmp_SAPDT_ ;
foreach (DataRow row in ds.Tables["T1"].Rows)
{
Tmp_DLEMPLYID = row["DLEMPLYID"].ToString();
Tmp_CREMPLYID = row["CREMPLYID"].ToString();
Tmp_MTEMPLYID = row["MTEMPLYID"].ToString();
Tmp_AMMNO = row["AMMNO"].ToString();
//新增 CaluField 欄位 - [人員姓名]
Tmp_Sql = " SELECT EMPLYNM "
+ " FROM HR_EMPLYM "
+ " WHERE EMPLYID=" + myfunc.AA(Tmp_DLEMPLYID);
Tmp_DLEMPLYID_ = myfunc.SqlValue(Tmp_Sql);
Tmp_Sql = " SELECT EMPLYNM "
+ " FROM HR_EMPLYM "
+ " WHERE EMPLYID=" + myfunc.AA(Tmp_CREMPLYID);
Tmp_CREMPLYID_ = myfunc.SqlValue(Tmp_Sql);
Tmp_Sql = " SELECT EMPLYNM "
+ " FROM HR_EMPLYM "
+ " WHERE EMPLYID=" + myfunc.AA(Tmp_MTEMPLYID);
Tmp_MTEMPLYID_ = myfunc.SqlValue(Tmp_Sql);
//新增 CaluField 欄位 - [件號][工單號碼]
Tmp_Sql = " SELECT SAPNO,PN,SAPDT "
+ " FROM AMM_SRO "
+ " WHERE AMMNO=" + myfunc.AA(Tmp_AMMNO);
Tmp_Str = myfunc.SqlValue(Tmp_Sql);
Tmp_SAPNO_ = myfunc.StrExtract(Tmp_Str, 1);
Tmp_PN_ = myfunc.StrExtract(Tmp_Str, 2);
Tmp_SAPDT_ = myfunc.Date2Str(myfunc.StrExtract(Tmp_Str,3));
row["DLEMPLYID_"] = Tmp_DLEMPLYID_;
row["CREMPLYID_"] = Tmp_CREMPLYID_;
row["MTEMPLYID_"] = Tmp_MTEMPLYID_;
row["SAPNO_"] = Tmp_SAPNO_;
row["PN_"] = Tmp_PN_;
row["SAPDT_"] = Tmp_SAPDT_;
}
return ds;
}
PS: jQuery.grep() 用法
處理說明:1>grep可以在陣列中逐一尋找並篩選出符合條件的內容, 該方法會返回一個新的陣列。
範例1:從陣列中移除 9 的 item
var arr = [ 1, 9, 4, 7, 3, 8, 6, 9, 1 ]; //找出數值不等於9的資料
arr = jQuery.grep(arr, function( item )
{ return item !== 9; });
結果 :
[1, 4, 7, 3, 8, 6, 1]範例2: 從陣列中移除 PK 的 item
CHK_PK_OBJ.PK_LIST = jQuery.grep(CHK_PK_OBJ.PK_LIST, function (item) {
return item != Tmp_PK;
});
沒有留言:
張貼留言