目的: V20108 – 工作程序資源設定 – 客製化MD畫面- Detail非標準的MD畫面
2025年9月24日 星期三
V20108 – 工作程序資源設定 – 客製化MD畫面- 樣板.Detail Grid畫面 - 隱藏不用,換成客製化Detail畫面
2025年9月3日 星期三
V20305L-[上下層同時提料需求申請]鈕- PK_LIST –勾選資料傳至後端 - 全部匯出 - Email附檔 -New
目的: V20305L-[上下層同時提料需求申請]鈕
- PK_LIST –勾選資料傳至後端-全部匯出- Email附檔
處理說明:
for (var i = 0; i < CHK_PK_OBJ.PK_LIST.length; i++) {
cur_rec = CHK_PK_OBJ.ALL_LIST[i];
Tmp_DataAry1.push(cur_rec);
var np= {};
np["DataString1"] = Tmp_DataString1;
cur_rec = Tmp_Grid.store.getAt(i);
console.log("cur_rec :", cur_rec);
console.log("cur_rec.data :", cur_rec.data);
if (!(JSON.stringify(cur_rec.data) === '{}')) {
Tmp_DataAry2.push(cur_rec.data);
}
套表檔案名稱(*.xlsx)和匯出檔案名稱(*_yyyyMMdd.xlsx)不可相同,
1>>勾選資料傳至後端
var cur_rec;
let Tmp_DataAry1 = [];
var Tmp_DTSOR,Tmp_AMMNO;
var Tmp_Str;
for (var i = 0; i < CHK_PK_OBJ.PK_LIST.length; i++) {
cur_rec = CHK_PK_OBJ.ALL_LIST[i];
Tmp_AMMNO = cur_rec.AMMNO.toString();
Tmp_DTSOR = cur_rec.DTSOR.toString();
if (!(JSON.stringify(cur_rec) === '{}')) {
Tmp_DataAry1.push(cur_rec);
}
}
//主畫面勾選資料
let Tmp_DataString1 = JSON.stringify(Tmp_DataAry1);
var np= {};
np["DataString1"] = Tmp_DataString1;
//新增 AMM_TLSAR & AMM_AR
//STEP2: 若 AMM_TLSAR & AMM_AR of FMNO 不存在, 則新增該檔案資料(AMM_TLSAR, AMM_AR)
Tmp_url = '../../api/V20305LAPI/CHECK_EXIST_UPDOWN_LCN';
Tmp_RtnStr = getUrlStr(Tmp_url, np, "檢核 [交修單號] 是否存存上下層提料件號");
if (!checkRtnOK(Tmp_RtnStr)) {
mywarnalert(Tmp_RtnStr);
return;
}
//STEP1 : 更新[上下層需求說明(AMM_UOCD.UDRQSN)]
var Tmp_Grid = Ext.getCmp('sub_Grid');
var cur_rec;
let Tmp_DataAry2 = []; //目前子畫面的資料,傳至後端
var Tmp_Str = "";
var Tmp_RtnMsg = "";
if (Tmp_Grid.store.length == 0) {
mywarnalert("目前無[上下層同時提料]資料,無法確認送出");
return;
}
//取得目前子畫面所有資料
for (var i = 0; i < Tmp_Grid.store.getCount(); i++) {
cur_rec = Tmp_Grid.store.getAt(i);
console.log("cur_rec :", cur_rec);
console.log("cur_rec.data :", cur_rec.data);
if (!(JSON.stringify(cur_rec.data) === '{}')) {
Tmp_DataAry2.push(cur_rec.data);
}
}
let Tmp_DataString2 = JSON.stringify(Tmp_DataAry2); //子畫面所有資料
var np = {};
np["DataString1"] = Tmp_DataString1; //主畫面勾選皫資料
np["UDRQSN"] = Ext.getCmp("sub_UPDOWN_DESCP").getValue();
np["STAUOCD"] = Ext.getCmp("s_STAUOCD").getValue(); //主畫面的[是否提料] - 過濾修件
//np["DataString1"] = Tmp_DataString1;
var Tmp_url = "../../api/V20305LAPI/UPDATE_UDRQSN";
Tmp_RtnMsg = getUrlStr(Tmp_url, np, "更新[上下層需求說明(AMM_UOCD.UDRQSN)]欄位值");
if (!checkRtnOK(Tmp_RtnMsg)) {
myalert(Tmp_RtnMsg);
return;
} // end of SelAllBtn_click
string Tmp_FName = "V20305_上下層同時提料申請清單.xlsx"; //套表的檔案名稱 :
string documentPath = HttpContext.Current.Server.MapPath("~") + "document\\";
string pathFName = documentPath + "V20305_上下層同時提料申請清單_" +DateTime.Now.ToString("yyyyMMdd") + ".xlsx";
FileStream fs = null;
Workbook wk = null;
fs = myfunc.get_SS_FILES(Tmp_FName);
wk = new Workbook();
wk.LoadFromStream(fs);
Worksheet ws1 = wk.Worksheets[0];//獲取第一個工作表
try
{
wk.SaveToStream(stream, FileFormat.Version2007);
2025年9月1日 星期一
V20305M – [匯入PDM BOM檔]鈕 - Panel隱藏
目的: V20305M – [匯入PDM BOM檔]鈕 - Panel隱藏
cmp_sub_panel1.id = "sub_panel1";
var cmp_sub_panel1 = get_cmp_panel1(200);
cmp_sub_panel1.id = "sub_panel1";
var cmp_sub_PN = get_cmp_txt1('件號', 'sub_PN', 110, 120);
var cmp_sub_EONO = get_cmp_txt1('ECNO', 'sub_EONO', 110, 100);
var cmp_sub_CDCODE = get_cmp_txt1('情況碼', 'sub_CDCODE', 110, 100);
cmp_sub_panel1.items.push(cmp_sub_PN, cmp_sub_EONO, cmp_sub_CDCODE);
Ext.getCmp("sub_panel1").hide();
2025年8月28日 星期四
V20305J- [非TLS品項批次提料]鈕 – [選擇檔案] - 過濾檔案名稱 *.xlsx
目的: V20305J- [非TLS品項批次提料]鈕 – [選擇檔案] - 過濾檔案名稱 *.xlsx
處理說明: 1>選擇檔案: 限制 *. xlsx 的附屬檔名
2>Web程式 SPIRE.XLS 處理 Excel檔案名稱均需為 *.xlsx
否則產生的檔案(*.xls) 常常無法開啟
3> { xtype: 'filefield', accept:’.xlsx’, }
var cmp_SelFile = get_cmp_file1("sub_File");
Ext.getCmp("sub_File").fileInputEl.set({ accept: '.xlsx' });
2025年8月26日 星期二
V20305F –SQL : AND rownum=1
目的: V20305F –SQL : AND rownum=1
處理說明: 1>Rownum 為 ORDER BY 前的順序
2>若Rownum 要依 ORDER BY 的順序
必需先 SELECT rownum,xx
FROM (SELECT * FROM xx ORDER BY xx)
2025年8月25日 星期一
V20305E1 – [請料提出(EMAIL專案)]-來源: AMM – Email附檔 - 套表檔名 & 匯出檔名需不同檔案
目的:V20305E1–[請料提出(EMAIL專案)]- Email附檔-套表檔名&匯出檔名不可相同
匯出檔案名稱: "V20305_物料清單_請料提出_A_"+yyyymmdd+".xlsx"; string Tmp_FName = "V20305_物料清單_請料提出_A.xlsx"; //套表檔名
Attachment attm1 = new Attachment(Tmp_FName1, ct1);
ChkMail.Attachments.Add(attm1);
1>*.js
var Tmp_subject = "AMM V20305 交修件提料完成通知 ";
var Tmp_content = " 拆檢提領編號(" + Tmp_OGONOAFs + ")<br>"
+ " 件號(" + Tmp_PNs + ")<br>"
+ "工廠已完成零件需求登錄<br><br>"
+ "附檔為 [V20305_物料清單_請料提出_A_" + DatetoStr(cnow(), "Ymd") +".xlsx]<br>"
+ "已EMAIL通知[專案人員]&[發工人員]&[提料申請人員]<br>"
+ "執行後續作業<br>";
Tmp_content = Tmp_content.replace(/<br>/g, "\r\n");
//DTSOR='A' 的 EMAIL
await Call_V20305E1(Tmp_subject, Tmp_content, Tmp_EMPLYIDs, Tmp_AMMNOs);
2025年8月20日 星期三
V20305E: 程序1-->程序2-->程序3 - -JavaScript 的用法 async & await – 並包成 try {..} catch{..} 顯示錯誤訊息
-JavaScript 的用法 async & await – 並包成 try {..} catch{..} 顯示錯誤訊息
async function CALL_V20305_ALL() {try {await CALL_STEP1();await CALL_STEP2();
await CALL_STEP3();
mywarnalert("成功_finally:CALL_V20305_ALL -完成");
} //end of try
catch (err) {
mywarnalert(err);}} // end of async CALL_V20305_ALL
async function CALL_STEP1() {try {
Ext.util.Cookies.set("Rtn_Msg", "");await CHECK_V20305_TEST1(true);Ext.util.Cookies.set("Rtn_Msg", "");await CHECK_V20305_TEST2(true);Ext.util.Cookies.set("Rtn_Msg", "");await CHECK_V20305_TEST3(true);
} // end of CALL_STEP1} //end of trycatch (err) {throw new Error(err); //若有 throw Error ,則不會再往下執行 --> 會自動加 Error:}
function CHECK_V20305_TEST1(success) {return new Promise((resolve, reject) => {setTimeout(() => {if (success) {resolve({ data: '這是伺服器回傳的資料 1' }); //成功傳回資料} else {reject('資料載入失敗_reject 1'); //會自動發出 throw exception}}, 1000);
})
}