目的:V20304D – [確認轉TLS]鈕 – 顯示執行訊息 & 下載檔案至前端 - Cookie - 文字檔案
處理說明: 1>將目前勾選的資料,存成 Tmp_DataAry
var Tmp_DataAry = [];
var cur_rec;
for (let i = 0; i < CHK_PK_OBJ.PK_LIST.length; i++) {
cur_rec = CHK_PK_OBJ.ALL_LIST[i];
Tmp_DataAry.push(cur_rec);
} // for i=0 to
2>將 DataAry 轉成 JSON 語法, 傳至後端
var Tmp_DataString = JSON.stringify(Tmp_DataAry);
var np = {}; //TMFunction.js, 組合form上的查詢條件為json參數傳遞 np["sub_DataString"] = Tmp_DataString; //存入目前勾選的資料
3>呼叫 form.submit , 以便下載檔案至前端
Tmp_url = "../../api/V20304DAPI/Check2CSM_AR";
Ext.getCmp('s_form').submit({
method: "POST",
url: Tmp_url,
standardSubmit: true,
params: np,
async: false,
});
4>利用 Cookie ,顯示執行結果訊息(*.cs)
if (!is_Ok)
{
//訊息加入 Cookie
Tmp_Str = "[確認轉TLS]執行失敗!!<br>"
+"請參閱附件檔("+ Tmp_out_FName+")";
MyCookie = new HttpCookie("V20304D", HttpUtility.UrlEncode(Tmp_Str));
HttpContext.Current.Response.Cookies.Add(MyCookie);
HttpContext.Current.ApplicationInstance.CompleteRequest();
:
}
[確認轉TLS]鈕:
var Tmp_DataAry = [];
var cur_rec;
for (let i = 0; i < CHK_PK_OBJ.PK_LIST.length; i++) {
cur_rec = CHK_PK_OBJ.ALL_LIST[i];
Tmp_DataAry.push(cur_rec);
} // for i=0 to
//for (var i = 0; i < CHK_PK_OBJ.ALL_LIST.length; i++) {
var Tmp_DataString = JSON.stringify(Tmp_DataAry);
var np = {}; //TMFunction.js, 組合form上的查詢條件為json參數傳遞
np["sub_DataString"] = Tmp_DataString; //存入目前勾選的資料
var Tmp_url = "";
//STEP1> 檢核勾選資料, 是否正確 , 傳回 txt 檔案, 不可以用 getUrlStr
Tmp_url = "../../api/V20304DAPI/Check2CSM_AR";
Ext.getCmp('s_form').submit({
method: "POST",
url: Tmp_url,
standardSubmit: true,
params: np,
async: false,
});
var mask = new Ext.LoadMask(Ext.getBody(), {
msg: '確認轉TLS中, 請稍待...'
});
mask.show();//使用 mask 需手動呼叫show() 方法下
var timer = setInterval(function () {
//timer = null;
//若資料庫已更新完成, 則 Email 委約==6 & Email 委約<>6
var r = r_cookies('V20304D');
console.log("cookies V20304D =", r);
if (!checkisnull(r)) {
mask.hide();
mysuccessalert(r);
clearInterval(timer); //不再重覆執行
if (r.indexOf("完成") > -1) {
// 不可return & 函式寫在下方,
//因為 js 會直譯code,會一直往下執行 (不管是否成功)
UPDATE_CSM_AR();
}
//me.up("window").close();
//me.up("window").destroy();
}
}, 1000) // end of timer
//更新資料庫 update_CSM_AR()
function UPDATE_CSM_AR() {
mysuccessalert("STEP2 : 檢核資料OK, 執行更新 CSM_AR 流程!!");
//2.1>> 若 CSM_AR@TLS_245 已存在, 則先刪除再 iNSERT , 以 AMM_TLSAR新增
var Tmp_DataAry = [];
var cur_rec;
for (let i = 0; i < CHK_PK_OBJ.PK_LIST.length; i++) {
cur_rec = CHK_PK_OBJ.ALL_LIST[i];
Tmp_DataAry.push(cur_rec);
} // for i=0 to
//for (var i = 0; i < CHK_PK_OBJ.ALL_LIST.length; i++) {
var Tmp_DataString = JSON.stringify(Tmp_DataAry);
var np = {}; //TMFunction.js, 組合form上的查詢條件為json參數傳遞
np["sub_DataString"] = Tmp_DataString; //存入目前勾選的資料
var Tmp_url = "";
//STEP1> 檢核勾選資料, 是否正確 , 傳回 txt 檔案, 不可以用 getUrlStr
Tmp_url = "../../api/V20304DAPI/Update2CSM_AR_AMM_FM";
Ext.getCmp('s_form').submit({
method: "POST",
url: Tmp_url,
standardSubmit: true,
params: np,
async: false,
});
var mask = new Ext.LoadMask(Ext.getBody(), {
msg: '[確認轉TLS].更新資料中, 請稍待...',
});
mask.show();//使用 mask 需手動呼叫show() 方法下
var timer = setInterval(function () {
//timer = null;
//若資料庫已更新完成, 則 Email 委約==6 & Email 委約<>6
var r = r_cookies('V20304D1');
console.log("cookies V20304D1 =", r);
if (!checkisnull(r)) {
mask.hide();
//2025/01/03 microed 若成功,則重新顯示資料
mysuccessalert(r, function () {
Ext.getCmp("btn_Show").fireHandler();
})
//mysuccessalert(r);
////2025/01/03 microed 若成功,則重新顯示資料
//Ext.getCmp('btn_Show').fireHandler(); //重新顯示 Master資料
clearInterval(timer); //不再重覆執行
//若執行資料庫更新的處理OK,則檢核是否通知品保維護品保工時 Email QC
if (r.indexOf("完成") > -1) {
if (CHECK_ISEMAIL_QC() == 'Y')
;
}
//me.up("window").close();
//me.up("window").destroy();
}
}, 1000) // end of timer
} // UPDATE_CSM_AR()
2>*.cs
[HttpPost]
public void Check2CSM_AR()
{
var c = HttpContext.Current;
NameValueCollection nvc = c.Request.Form;
HttpCookie MyCookie;
//var response = this.Request.CreateResponse();
string Tmp_DataString = nvc["sub_DataString"]; //Tmp_DataString: 取得目前勾選的資料. JSON字串
DataTable dt1 = myfunc.JSON2dt(Tmp_DataString); //目前子畫面所勾選的資料
string Tmp_FMNO="", Tmp_AMMNO, Tmp_RPNOAF;
string Tmp_STATFM, Tmp_OPHR;
string Tmp_Str = "";
bool is_Ok = true;
try
{
string Tmp_out_FName = "V20304B_確認轉TLS_log.txt"; //處理_log.txt
string documentPath = HttpContext.Current.Server.MapPath("~") + "document\\"; //取得實實的路徑
string Tmp_out_pFName = documentPath + Tmp_out_FName; //含 path 的Filename
if (File.Exists(Tmp_out_pFName))
{
File.Delete(Tmp_out_pFName);
}
//using (StreamWriter sw = new StreamWriter(Tmp_out_pFName)) //小寫TXT
//處理每筆工單
string Tmp_RowStr = "";
string Tmp_RtnMsg = "";
for (var i = 0; i < dt1.Rows.Count; i++)
{
Tmp_RowStr = "";
Tmp_FMNO = dt1.Rows[i]["FMNO"].ToString();
Tmp_AMMNO = dt1.Rows[i]["AMMNO"].ToString();
Tmp_RPNOAF = dt1.Rows[i]["RPNOAF"].ToString();
//Check1 : 檢核 STATFM in ('C','E','F','J','L','G') && OPHR='Y'
Tmp_STATFM = dt1.Rows[i]["STATFM"].ToString();
Tmp_OPHR = dt1.Rows[i]["OPHR"].ToString();
if ("C,E,F,J,L,G".IndexOf(Tmp_STATFM)==-1)
{
Tmp_RowStr = Tmp_RowStr+ "[目前交修單況("+ Tmp_STATFM + ")]必需在 C,E,F,J,L,G;";
}
if (Tmp_OPHR != "Y")
{
Tmp_RowStr = Tmp_RowStr + "[目前開放工時("+ Tmp_OPHR + ")]必需為 Y;";
}
if (Tmp_RowStr.Length > 0)
{
is_Ok = false;
Tmp_RowStr = "系統件單號(" + Tmp_FMNO + ")" + Tmp_RowStr+ "\r\n";
File.AppendAllText(Tmp_out_pFName, Tmp_RowStr); //不用 sw , 改用 File.AppendAllText
}
//sw.WriteLine(Tmp_Str);
};// end of for (var i = 0; i < dt1.Rows.Count; i++)
// sw.Close才會實際寫入檔案(Tmp_out_pFName)
//sw.Close();
if (!is_Ok)
{
//訊息加入 Cookie
Tmp_Str = "[確認轉TLS]執行失敗!!<br>"
+"請參閱附件檔("+ Tmp_out_FName+")";
MyCookie = new HttpCookie("V20304D", HttpUtility.UrlEncode(Tmp_Str));
HttpContext.Current.Response.Cookies.Add(MyCookie);
HttpContext.Current.ApplicationInstance.CompleteRequest();
//若約別不符, 傳送 檔案至前端
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode((string)Tmp_out_pFName, System.Text.Encoding.UTF8) + "\"");
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.ContentType = "text/plain";
HttpContext.Current.Response.WriteFile(Tmp_out_pFName);
HttpContext.Current.Response.End();
return;
}
Tmp_Str = "勾選資料.[確認轉TLS]完成!!<br>";
MyCookie = new HttpCookie("V20304D", HttpUtility.UrlEncode(Tmp_Str));
HttpContext.Current.Response.Cookies.Add(MyCookie);
HttpContext.Current.ApplicationInstance.CompleteRequest();
}// end of try
catch (Exception e)
{
Tmp_Str = e.Message;
Tmp_Str = "[確認轉TLS]執行失敗!!<br>"
+ Tmp_Str;
MyCookie = new HttpCookie("V20304D", HttpUtility.UrlEncode(Tmp_Str));
HttpContext.Current.Response.Cookies.Add(MyCookie);
HttpContext.Current.ApplicationInstance.CompleteRequest();
return;
//throw e;
//Tmp_Str = "{success: false , Rtn_Msg:" + "錯誤訊息如下:"+myfunc.AA(Tmp_ErrMsg) + "," + " }";
//Tmp_Str = "{success: false , Rtn_Msg:" + myfunc.AA(Tmp_RtnMsg) + "}";
//response.Content = new StringContent(Tmp_Str); // 回應內容
//return response;
}
finally
{
//conn.Close();
}
} // end of UPDATE_SAPSTAT
沒有留言:
張貼留言