Status2 <s:textfield>中的时间格式化输出

Struts2中日期格式化
本文介绍如何解决Struts2框架中&lt;s:textfield&gt;显示日期格式问题,通过JavaScript实现日期格式化输出,并列举了三种Struts2内置方法。

对于Status2日期格式化处理的问题,我在网上搜了下说是通过以下三种方式可以实现日期的格式化处理,但我今天要分享的是通过JS的方式实现Status2 <s:textfield>中的日期格式化输出问题。

* 这是使用<s:textfield>标签没处理的时间输出情况,如下图:


下面这段代码是我的JSP页面代码(代码简化处理了,原来我的代码还加有样式):

<li><label>绑定时间:</label></li>
<li><s:textfield id="bindTime" name="" ></s:textfield></li>

* 正常的输出应该是这样的<li><s:textfield id="bindTime" name="pushDevice.bindTime" ></s:textfield></li>,但这样得到的结果是一个时间戳,显然不是我们所要的。

1.我也是参照网上给出的三种办法试验,结果没出来,请教了下公司的大神,下面的代码是JS对日期的格式化处理:

$(function(){
		var times = <%=request.getAttribute("pushDevice.bindTime")%>;
		var d = new Date(times);
		var r = d.format("yyyy-MM-dd hh:mm:ss");
		$("#bindTime").val(r);
	})
* pushDevice为我bean里边的对象名
* 这是经过 JS 处理后的时间输出情况,如下图:


经过以上处理的结果,就是可以得到我们想要的时间格式了。

下面我也把网上的给出的三种处理办法列出来了,供大家参考:

* 转载:http://blog.knowsky.com/188737.htm

1、利用 <s:date>进行格式化,如:

<s:date name="pushDevice.bindTime" format="yyyy-MM-dd" />

就是将属性pushDevice.bindTime按yyyy-MM-dd的格式进行输出。

注:name和format都不能省略,但这种方式显然也不符合我们需求,我们是在<s:textfield>中输出的

2、利用<s:param>进行格式化,如:

<s:textfield name="bindTime">
	<s:param name="value" ><s:date name="pushDevice.bindTime" format="yyyy-MM-dd" /></s:param>
</s:textfield>

注:同样这些标签中的name属性也不能省。

3、通过国际化的方式:

首先在struts.properties中配置

struts.custom.i18n.resources=globalMessages。

然后在globalMessages_zh_CN.properties和globalMessages_en_US.properties文件中添加如下内容:

global.datetime = {0 ,date ,yyyy-MM-dd HH:mm:ss}

global.date = {0, date ,yyyy-MM-dd}

最后在页面中使用下面的语句就可以实现日期的格式化输出了:

//golbal.date样式

<s:textfield name="pushDevice.bindTime" value="%{getText('global.date',{pushDevice.bindTime})}"/>
<span style="font-family: 宋体; font-size: 15px; line-height: 24px; background-color: rgb(242, 249, 255);"><span style="color:#003300;">//global.datetime样式</span></span>

<s:textfield name="pushDevice.bindTime" value="%{getText('global.datetime',{pushDevice.bindTime})}"/>

注:以上方法前两个是测试通过的。第三个没有实验过,大家可以实验一下试试。





<?xml version="1.0" encoding="UTF-8"?> <!-- Created with Jaspersoft Studio version 5.6.2.final using JasperReports Library version 5.6.1 --> <!-- 2025-08-21T15:09:26 --> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="special_approval_print" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="59440729-dca8-4d78-903a-0fe0ffaa654e"> <property name="com.jaspersoft.studio.data.defaultdataadapter" value="QA"/> <parameter name="PCODE" class="java.lang.String"/> <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"/> <queryString language="SQL"> <![CDATA[select app.CODE,app.CREATE_DATE, CASE WHEN app.STATUS=10 THEN '已创建' WHEN app.STATUS=20 THEN '审批中' WHEN app.STATUS=-1 THEN '作废' WHEN app.STATUS=50 THEN '审批通过' WHEN app.STATUS=13 THEN '已撤回' WHEN app.STATUS=12 THEN '审批退回' ELSE '' END as STATUS ,app.TYPE,op.CNVALUE SPECIAL_TYPE, csysu.realName as CREATOR, psysu.realName as PROPOSER, opChannel.CNVALUE CHANNEL, app.COMMENTS from T_OA_SPECIAL_APPROVAL app LEFT JOIN T_BI_CHOOSE_OPTION op on app.SPECIAL_TYPE=op.CKEY and op.CODE='SPECIAL_APPROVAL_TYPE' LEFT JOIN T_BI_USER creator on app.CREATOR_ID=creator.ID LEFT JOIN sysuser csysu on creator.SYSUSERID=csysu.ID LEFT JOIN T_BI_USER proposer on app.PROPOSER_ID=proposer.ID LEFT JOIN sysuser psysu on proposer.SYSUSERID=psysu.ID LEFT JOIN T_BI_CHOOSE_OPTION opChannel on app.CHANNEL=opChannel.CKEY and opChannel.CODE='SPECIAL_APPROVAL_CHANNEL' and opChannel.IS_AVAILABLE=1 WHERE app.CODE=$P{PCODE}]]> </queryString> <field name="CODE" class="java.lang.String"/> <field name="CREATE_DATE" class="java.sql.Timestamp"/> <field name="STATUS" class="java.lang.String"/> <field name="TYPE" class="java.lang.String"/> <field name="SPECIAL_TYPE" class="java.lang.String"/> <field name="CREATOR" class="java.lang.String"/> <field name="PROPOSER" class="java.lang.String"/> <field name="CHANNEL" class="java.lang.String"/> <field name="COMMENTS" class="java.lang.String"/> <background> <band splitType="Stretch"/> </background> <title> <band height="25" splitType="Stretch"> <staticText> <reportElement x="0" y="0" width="802" height="17" uuid="b8891482-7a61-4cc9-8e98-62748c198880"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font fontName="Serif" isBold="true"/> </textElement> <text><![CDATA[ Consumer China]]></text> </staticText> </band> </title> <detail> <band height="335" splitType="Stretch"> <staticText> <reportElement x="0" y="0" width="40" height="20" uuid="5b3e2dc0-137e-46a3-bb4a-0b237b719262"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" isBold="true" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <text><![CDATA[单据号]]></text> </staticText> <textField> <reportElement x="40" y="0" width="80" height="20" uuid="d278349b-a096-4396-98bf-177b2efd80b9"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <textFieldExpression><![CDATA[$F{CODE}]]></textFieldExpression> </textField> <textField> <reportElement x="165" y="0" width="60" height="20" uuid="0be6bc84-38e0-4e57-81d2-559a5ab8653c"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <textFieldExpression><![CDATA[$F{TYPE}]]></textFieldExpression> </textField> <staticText> <reportElement x="120" y="0" width="45" height="20" uuid="6c8f3c40-56e7-40a2-9dd3-c48367a5c150"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" isBold="true" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <text><![CDATA[单据类型]]></text> </staticText> <textField> <reportElement x="265" y="0" width="65" height="20" uuid="2f1a846f-ee38-48dc-82f0-3e4251dc5eff"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <textFieldExpression><![CDATA[$F{CREATOR}]]></textFieldExpression> </textField> <staticText> <reportElement x="225" y="0" width="40" height="20" uuid="fb178858-4ce0-465d-8231-59a6222ebead"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" isBold="true" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <text><![CDATA[创建人]]></text> </staticText> <textField isStretchWithOverflow="true" pattern="yyyy-MM-dd HH:mm:ss" isBlankWhenNull="true"> <reportElement x="375" y="0" width="75" height="20" uuid="55396ad6-53e6-40cf-8b16-a62adb5c2b1f"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <textFieldExpression><![CDATA[$F{CREATE_DATE}]]></textFieldExpression> </textField> <staticText> <reportElement x="330" y="0" width="45" height="20" uuid="4f973c73-327d-49f5-ba15-e6122a6ee422"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" isBold="true" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <text><![CDATA[创建时间]]></text> </staticText> <textField pattern="" isBlankWhenNull="false"> <reportElement x="490" y="0" width="64" height="20" uuid="ad4daafa-aa90-486e-823a-3210616256f6"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <textFieldExpression><![CDATA[$F{PROPOSER}]]></textFieldExpression> </textField> <staticText> <reportElement x="450" y="0" width="40" height="20" uuid="d3a03c17-f110-48ef-90d1-7244974a867f"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" isBold="true" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <text><![CDATA[申请人]]></text> </staticText> <textField> <reportElement x="605" y="0" width="60" height="20" uuid="2ea7e4b1-cb69-4945-ba76-f5507fcd17b9"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <textFieldExpression><![CDATA[$F{CHANNEL}]]></textFieldExpression> </textField> <staticText> <reportElement x="554" y="0" width="51" height="20" uuid="50da3526-2ce3-468e-a502-f5bf5b62fea1"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" isBold="true" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <text><![CDATA[渠道]]></text> </staticText> <textField> <reportElement x="40" y="20" width="760" height="20" uuid="1db8e162-1ca7-4db1-ba3e-2f2bb9ac0b49"/> <box leftPadding="2" rightPadding="2"> <topPen lineWidth="0.2"/> <leftPen lineWidth="0.2"/> <bottomPen lineWidth="0.2"/> <rightPen lineWidth="0.2"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <textFieldExpression><![CDATA[$F{SPECIAL_TYPE}]]></textFieldExpression> </textField> <staticText> <reportElement x="0" y="20" width="40" height="20" uuid="41a44bf3-e96a-4a07-ab2e-0050f6f9af9d"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" isBold="true" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <text><![CDATA[特批类型]]></text> </staticText> <textField> <reportElement x="716" y="0" width="84" height="20" uuid="59702a6a-b1bf-4d49-a415-fd0eade5a11d"/> <box leftPadding="2" rightPadding="2"> <topPen lineWidth="0.2"/> <leftPen lineWidth="0.2"/> <bottomPen lineWidth="0.2"/> <rightPen lineWidth="0.2"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <textFieldExpression><![CDATA[$F{STATUS}]]></textFieldExpression> </textField> <staticText> <reportElement x="665" y="0" width="51" height="20" uuid="4f9158bc-a0f3-432c-bcef-90930cad6a8c"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" isBold="true" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <text><![CDATA[状态]]></text> </staticText> <staticText> <reportElement x="0" y="40" width="40" height="280" uuid="cedfbe33-b432-4c24-82e2-f6b1cb86d2d2"/> <box leftPadding="2"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement verticalAlignment="Middle"> <font fontName="Serif" size="8" isBold="true" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <text><![CDATA[特批内容]]></text> </staticText> <textField> <reportElement stretchType="RelativeToBandHeight" x="40" y="40" width="760" height="280" uuid="ce443239-4a12-41d3-8b59-7ad3b4498a7b"/> <box leftPadding="2" rightPadding="2"> <topPen lineWidth="0.2"/> <leftPen lineWidth="0.2"/> <bottomPen lineWidth="0.2"/> <rightPen lineWidth="0.2"/> </box> <textElement> <font fontName="Serif" size="8" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/> </textElement> <textFieldExpression><![CDATA[$F{COMMENTS}]]></textFieldExpression> </textField> </band> </detail> <summary> <band height="42" splitType="Stretch"/> </summary> </jasperReport>
08-22
请分析下面代码,指出前端有什么校验:<script> function getHoldLotInfo(){ checkRuncardStatus(); //if(checkRuncardStatus()){ var form = document.forms['updateRequestForm']; var lotId = form.elements["requestForm.lotId"].value; var holdStepNo= form.elements["requestForm.holdStepNo"].value; if(lotId==""){alert("Please key-in one LotId");return false;} if(holdStepNo==""){ form.action="updateHoldLotInfo.action"; checkboxSync();form.submit();alert("Please key-in Hold Step No#:");} if (lotId.indexOf(" ")>0){alert("Lot Id is not allowed space!"); return false;} form.action="updateHoldLotInfo.action"; checkboxSync();form.submit(); //} } function EndQtimeHanle(id){ //alert (id); var QtimeHanle = document.getElementById("EndQtimeHanle"+id); var sQtimeHanle = QtimeHanle.options[QtimeHanle.selectedIndex].text; //alert(sQtimeHanle); var tObj = document.getElementById("allEndQtimeHandle"); var allEndQtimeHandle= tObj.value; //alert (allEndQtimeHandle); if (allEndQtimeHandle==""){ //alert(1); tObj.value = id +","+ sQtimeHanle+ ";"; }else{ //alert(2) //alert (allEndQtimeHandle.indexOf(id+",")); if (allEndQtimeHandle.indexOf(id+",")>=0){ //alert ("Replace"); allEndQtimeHandle=allEndQtimeHandle.replace(id +",;",id +","+ sQtimeHanle+ ";"); //alert ("Replace 1:"+allEndQtimeHandle ); allEndQtimeHandle=allEndQtimeHandle.replace(id +",Mapping;",id +","+ sQtimeHanle+ ";"); //alert ("Replace 2:"+allEndQtimeHandle ); allEndQtimeHandle=allEndQtimeHandle.replace(id +",Ignore;",id +","+ sQtimeHanle+ ";"); //alert ("Replace 3:"+allEndQtimeHandle ); allEndQtimeHandle=allEndQtimeHandle.replace(id +",NULL;",id +","+ sQtimeHanle+ ";"); //alert ("Replace 3:"+allEndQtimeHandle ); tObj.value = allEndQtimeHandle; }else{ //alert (2); tObj.value = allEndQtimeHandle +id +","+ sQtimeHanle+ ";" } } } </script> <#import "/decorators/includes/macros.ftl" as m> <#assign ww = JspTaglibs["/WEB-INF/webwork.tld"] /> <#include "/template/includes/actionerrors.ftl"> <@m.subRefreshForm "/user/stepForm/includeStepForm.ftl","SPAN_STEPFORM"/> <style type="text/css"> <!-- .TextBoxReadOnly { border:1px solid #C0C0C0; text-align:left; background-color:#D3D3D3; width:200px; readonly:expression(this.readOnly=true); } .TextBoxReadWrite { border:1px solid #C0C0C0; text-align:left; background-color:#FFFFFF; width:200px; readonly:expression(this.readOnly=false); } --> </style> <script> var area="${command?if_exists}"; window.onload=function(){ <#if requestForm.stepForms?has_content> //opener.document.updateRequestForm.updateWaferGroupResultBtn.click(); </#if> var fabName=document.forms['stepForm'].elements["stepForm.fabName"].value; if((fabName=="FAB1" ||fabName=="FAB2") && area.indexOf("DIFF")!=-1){ document.getElementById("showRemark").style.display=''; } var area=document.forms['stepForm'].elements["stepForm.area"]; if('${requestForm.fabId?default('')}'=="S1" && '${requestForm.formType?if_exists}'=="Scan Defect" && area.value == ""){ if(fabName=="A"){ area.value="S1A-PHOTO-M"; } else if(fabName=="B"){ area.value="S1B-PHOTO-M"; } else if(fabName=="C"){ area.value="S1C-CMP"; } } } function checkboxSync(){ var stepForm=document.forms['stepForm']; if ( (typeof stepForm.elements["rcpCheck"]!= "undefined") && stepForm.elements["rcpCheck"].checked){ stepForm.elements["stepForm.RCP"].value="on"; }else{ stepForm.elements["stepForm.RCP"].value="uncheck"; } if ( (typeof stepForm.elements["noStepNoPar"]!= "undefined") && stepForm.elements["noStepNoPar"].checked){ stepForm.elements["stepForm.noStepNo"].value="on"; }else{ stepForm.elements["stepForm.noStepNo"].value="uncheck"; } } function changeShow(object){ var stepForm=document.forms['stepForm']; var fabName=object.value; if("Engineering"==fabName) { if(!confirm("请注意您现在选择使用的是engineer folder 下的recipe!")) { stepForm["stepForm.recipeType"][0].checked=true; stepForm.action="viewStepForm.action"; checkboxSync(); stepForm.submit(); } } if("Matrix"==fabName) { if(!confirm("请注意您现在选择的是FEM run模式!")) { stepForm["stepForm.batchType"][0].checked=true; return false; } } if(object.value=="") { alert("Please select the fab area!"); return false; } if((fabName=="FAB1" ||fabName=="FAB2") && area.indexOf("DIFF")!=-1) { document.getElementById("showRemark").style.display=''; } else { document.getElementById("showRemark").style.display='none'; } if("Engineering"==fabName || "Production"==fabName || "Matrix"==fabName) { if("Engineering"==fabName) stepForm.action="viewStepForm.action?stepForm.batchType=Production"; else if("Matrix"==fabName) stepForm.action="viewStepForm.action?stepForm.energyStep=&stepForm.focusStep="; else stepForm.action="viewStepForm.action"; } else stepForm.action="viewStepForm.action?command=&stepForm.area="; checkboxSync(); stepForm.submit(); } function restrictLength(object){ var stepForm=document.forms['stepForm']; var value=object.value; if(value=="Eqp ID") { alert("输入的Eqp ID 的最大长度为7位!"); } } function checkNA(object){ var stepForm=document.forms['stepForm']; var eqpName=stepForm.elements["stepForm.eqpModeName"].value; var value=object.value; if(eqpName=="DUMMY" ||eqpName.indexOf("DMY02")!=-1){ if(value!="NA"){ alert("EQPName is DUMMY.You must select the 'NA'!"); object[object.length-1].selected=true; return false; } } } function showOvl(){ window.open('showOvl.action','','left=0,top=200,width=760,height=200'); } function defalutValue(){ var stepForm=document.forms['stepForm']; var chk=stepForm.elements['rcpCheck']; var area=stepForm.elements['stepForm.area']; var trackOutRecipe= stepForm.elements["stepForm.trackOutRecipe"]; if(chk.checked==false) { alert("如果想指定Chamber去auto run,可以把“Check with RCP”前边的勾去掉,Recipe里填写recipe name_chamber list(或者中划线“-”)"); if(areaValue=="PHOTO" || areaValue=="S1A-PHOTO" || areaValue=="S1B-PHOTO" ||areaValue=="S1C-PHOTO" || areaValue=="M1A-PHOTO" || areaValue=="M1B-PHOTO" || areaValue=="M1C-PHOTO" || areaValue=="SXA-PHOTO" || areaValue=="SXC-PHOTO") trackOutRecipe.value="recipe name_chamber list"; else stepForm.elements["stepForm.recipe"].value="recipe name_chamber list"; } else { alert("请填写正确的Recipe"); if(areaValue=="PHOTO" || areaValue=="S1A-PHOTO" || areaValue=="S1B-PHOTO" ||areaValue=="S1C-PHOTO" || areaValue=="M1A-PHOTO" || areaValue=="M1B-PHOTO" || areaValue=="M1C-PHOTO" || areaValue=="SXA-PHOTO" || areaValue=="SXC-PHOTO") trackOutRecipe.value="waiting Pi_Run Result"; else stepForm.elements["stepForm.recipe"].value="waiting Pi_Run Result"; } } function clearSpec(){ var stepForm=document.forms['stepForm']; stepForm.elements['stepForm.spec'].value=""; } function showSpec(){ var stepForm=document.forms['stepForm']; //stepForm.elements['stepForm.spec'].value=""; var value= stepForm.elements['stepForm.ecdPlanName'].value; if(value==""){ alert("Please input the EdcPlan"); return false;} window.open('showSpec.action?requestFormId=${requestForm.id}&edcPlan=' + value + '','','status=no,scrollbars=yes,location=no,resizable=yes,left=0,top=200,width=760'); } function changeByArea(object){ var stepForm=document.forms['stepForm']; if($F("stepForm.fabName")==""){ alert("Please select the fab area !"); return false; } var value=object.value; var eqpId=stepForm.elements["stepForm.eqpMode"].value; var eqpValue=stepForm.elements["stepForm.eqpModeName"].value; if(eqpId=="Eqp ID"){ if(eqpValue=="dummy" ||eqpValue=="DUMMY" || eqpValue.indexOf("DMY02")!=-1){ //DMY02 for cension if(areaValue=="PHOTO" || areaValue=="S1A-PHOTO" || areaValue=="S1B-PHOTO" ||areaValue=="S1C-PHOTO" || areaValue=="M1A-PHOTO" || areaValue=="M1B-PHOTO" || areaValue=="M1C-PHOTO" || areaValue=="SXA-PHOTO" || areaValue=="SXC-PHOTO"){ alert("Please do not set area as PHOTO for DUMMY Eqp ID!") stepForm.elements["stepForm.area"].focus(); } } } stepForm.elements["stepForm.eqpModeName"].value=""; if(typeof stepForm.elements["stepForm.recipe"]!= "undefined") stepForm.elements["stepForm.recipe"].value=""; if(typeof stepForm.elements["stepForm.trackOutRecipe"]!= "undefined") stepForm.elements["stepForm.trackOutRecipe"].value=""; stepForm.action="changeArea.action?stepForm.recipeType=Production"; checkboxSync(); stepForm.submit(); } function changeValeuToNumber(object){ var objectValue=object.value; var pattern = /[^\d\.\+\-]/g; if(pattern.test(objectValue)){ alert("请输入正确的数字格式"); object.value=""; object.focus(); } if("energyStep"==object.id) {if( eval(objectValue)>1000 || eval(objectValue)<-1000.0) { alert("EnergyStep的范围在 (-1000~1000)."); object.value=""; object.focus(); } } if("focusStep"==object.id) {if( eval(objectValue)>2 || eval(objectValue)<-2) { alert("FocusStep的范围在 (-2~2)."); object.value=""; object.focus(); } } } function eqpToUpper(object){ var form = document.forms['stepForm']; var mode=form.elements["stepForm.eqpMode"].value; var areaValue=form.elements["stepForm.area"].value; var value=object.value; var reg=/\s/g; var stringLength=value.replace(reg,""); if(mode!="Eqp Group"){ object.value=stringLength.toUpperCase(); } if(mode=="Eqp ID"){ if(stringLength.length>7) {alert("最多7个字符!"); object.value=""; object.focus(); return false; } if(stringLength=="dummy" ||stringLength=="DUMMY" || stringLength.indexOf("DMY02")!=-1){ //DMY02 for cension if(areaValue=="PHOTO" || areaValue=="S1A-PHOTO" || areaValue=="S1B-PHOTO" ||areaValue=="S1C-PHOTO" || areaValue=="M1A-PHOTO" || areaValue=="M1B-PHOTO" || areaValue=="M1C-PHOTO" || areaValue=="SXA-PHOTO" || areaValue=="SXC-PHOTO"){ alert("Please do not set area as PHOTO for DUMMY Eqp ID!"); form.elements["stepForm.area"].focus(); return false; } if (typeof form.elements["stepForm.recipe"]!= "undefined"){ form.elements["stepForm.recipe"].value="DUMMY"; form.elements["stepForm.recipe"].className="TextBoxReadOnly"; // checkNA(form.elements['stepForm.contaminationFlag']); } }else if(typeof form.elements["stepForm.recipe"]!= "undefined") form.elements["stepForm.recipe"].className="TextBoxReadWrite"; } } function scannerToUpper(){ var form = document.forms['stepForm']; var element = form.elements["stepForm.scannerRecipe"]; element.value =element.value.toUpperCase(); } function trackToUpper(){ var form = document.forms['stepForm']; var element = form.elements["stepForm.trackOutRecipe"]; element.value =element.value.toUpperCase(); } function recipeToUpper(){ var form = document.forms['stepForm']; var element = form.elements["stepForm.recipe"]; element.value =element.value.toUpperCase(); } function getStepLotInfo(){ var form = document.forms['stepForm']; var chk= form.elements['rcpCheck']; var noStepNo= form.elements['noStepNoPar']; if (typeof form.elements["noStepNoPar"]!= "undefined"){ if (!noStepNo.checked && form.elements["stepForm.stepNo"].value==""){ alert("Please input step No."); form.elements["stepForm.stepNo"].focus(); return false; } if (noStepNo.checked && form.elements["stepForm.stepNo"].value!=""){ alert("Please unCheck NA."); return false; } } form.action="updateStepInfo.action?ercParams=true"; checkboxSync(); disableButton(); form.submit(); } function checkBoxValue(param){ var returnPara=param; var form = document.forms['stepForm']; var chk= form.elements['rcpCheck']; var noStepNo= form.elements['noStepNoPar']; if (typeof form.elements["noStepNoPar"]!= "undefined"){ } return returnPara; } function checkPageToSubmit(){ var form = document.forms['stepForm']; var chk= form.elements['rcpCheck']; var noStepNo= form.elements['noStepNoPar']; var eqpID=$F("stepForm.eqpMode"); var eqpIDValue=$F("stepForm.eqpModeName"); var areaValue=$F("stepForm.area"); var stepNo=form.elements["stepForm.stepNo"]; if (typeof form.elements["noStepNoPar"]!= "undefined"){ var elementMes = form.elements["stepForm.stepNoMes"].value; var element = form.elements["stepForm.stepNo"].value; if (elementMes==null || element!=elementMes){ alert("Please click [go] to get MES information."); form.elements["stepForm.stepNo"].focus(); return false; } } <#if !stepForm?exists || stepForm.stepSerialNo?default(0)==0 || !(stepForm.stepQtimes?has_content || stepForm.stepQtimeEnds?has_content)> <#if stepQtimes?has_content> alert("Q time configuration start at this step in mainflow. If need start this Q time. Need setting it at Group result"); </#if> </#if> <#list stepQtimeEnds as stepQtimeEnd> EndQtimeHanle(${stepQtimeEnd.id}); </#list> if((eqpIDValue=="dummy" || eqpIDValue=="DUMMY")&& (areaValue=="PHOTO" || areaValue=="S1A-PHOTO" || areaValue=="S1B-PHOTO" ||areaValue=="S1C-PHOTO" || areaValue=="M1A-PHOTO" || areaValue=="M1B-PHOTO" || areaValue=="M1C-PHOTO" || areaValue=="SXA-PHOTO" || areaValue=="SXC-PHOTO") && eqpID=="Eqp ID"){ alert("Please do not set area as PHOTO for DUMMY Eqp ID!"); $("stepForm.area").focus(); return false; } if (typeof form.elements["noStepNoPar"]!= "undefined"){ if (!noStepNo.checked && form.elements["stepForm.stepNo"].value==""){ alert("Please input step No."); form.elements["stepForm.stepNo"].focus(); return false; } if (noStepNo.checked && form.elements["stepForm.stepNo"].value!=""){ alert("Please unCheck NA."); return false; } } if(form.elements['stepForm.slotId'].value!="") { if(form.elements['stepForm.ecdPlanName'].value=="") {alert("Please Input Corrective EDC Plan Name!"); form.elements['stepForm.ecdPlanName'].focus(); return false;} } if(form.elements['stepForm.ecdPlanName'].value!="") { if(form.elements['stepForm.slotId'].value=="") { alert("Please select SlotId!"); return false; } else { if(!checkWaferIdIsEqualSlotId(form)){ alert("Meas slot id is not in wafer id list"); return false; } } } if (typeof form.elements["stepForm.spec"]!= "undefined"){ var element = form.elements["stepForm.spec"].value; if (element==""&&form.elements['stepForm.slotId'].value!=""){ alert("Please Input Corrective EDC Plan Name!"); form.elements["stepForm.ecdPlanName"].focus(); return false; } } if (typeof form.elements["stepForm.area"]!= "undefined"){ var element = form.elements["stepForm.area"].value; if (element=="Please Select"){ alert("Please select area."); form.elements["stepForm.area"].focus(); return false; } } if (typeof form.elements["stepForm.waferId"]!= "undefined"){ var element = form.elements["stepForm.waferId"].value; if (element==""){ alert("Please select waferId."); form.elements["stepForm.waferId"].focus(); return false; } } if (typeof form.elements["stepForm.eqpModeName"]!= "undefined"){ var element = form.elements["stepForm.eqpModeName"].value; var elementFlag = form.elements["stepForm.contaminationFlag"].value; if (element=="" || element=="NA"){ alert("Equipment ID/Group can not be null or NA!"); form.elements["stepForm.eqpModeName"].focus(); return false; } if((element=="DUMMY" || element.indexOf("DMY02")!=-1)&& elementFlag!="NA"){ alert("EQPName is DUMMY.You must select the Contamination Flag 'NA'!"); return false; } } if (typeof form.elements["stepForm.recipe"]!= "undefined"){ var element = form.elements["stepForm.recipe"].value; if (element==""){ alert("Recipe can not be null"); form.elements["stepForm.recipe"].focus(); return false; } } if (typeof form.elements["stepForm.area"]!= "undefined"){ var element = form.elements["stepForm.area"].value; if (element==""){ alert("Area can not be empty"); form.elements["stepForm.area"].focus(); return false; } } if (typeof form.elements["stepForm.scannerRecipe"]!= "undefined"){ var element = form.elements["stepForm.scannerRecipe"].value; if (element==""){ alert("Scanner Recipe can not be null"); form.elements["stepForm.scannerRecipe"].focus(); return false; } } if (typeof form.elements["stepForm.trackOutRecipe"]!= "undefined"){ var element = form.elements["stepForm.trackOutRecipe"].value; if (element==""){ alert("Track Recipe can not be null"); form.elements["stepForm.trackOutRecipe"].focus(); return false; } } if (typeof form.elements["stepForm.waferSlotId"]!= "undefined"){ var element = form.elements["stepForm.waferSlotId"].value; if (element==""){ alert("Wafer/Slot Id can not be null"); form.elements["stepForm.waferSlotId"].focus(); return false; } } if (typeof form.elements["stepForm.contaminationFlag"]!= "undefined"){ var element = form.elements["stepForm.contaminationFlag"].value; var eqpName = form.elements["stepForm.eqpModeName"]; if (element=="Please Select"){ alert("Please Select Contamination Flag:"); form.elements["stepForm.contaminationFlag"].focus(); return false; } } if (typeof form.elements["stepForm.remark"]!= "undefined"){ var element = form.elements["stepForm.remark"].value; if(element.length>150) { alert("Remark 最多150个字符"); return false; } if(element.indexOf(">")!=-1 ||element.indexOf("<")!=-1){ alert("Remark can not have special character!"); form.elements["stepForm.remark"].focus(); return false; } if (element==""){ alert("Remark can not be null!"); form.elements["stepForm.remark"].focus(); return false; }else{ removeEnter(form.elements["stepForm.remark"]); } } if (typeof form.elements["stepForm.reticleId"]!= "undefined"){ var element = form.elements["stepForm.reticleId"].value; if (element==""){ alert("ReticleID can not be null!"); form.elements["stepForm.reticleId"].focus(); return false; } } if (typeof form.elements["stepForm.energy"]!= "undefined"){ var element = form.elements["stepForm.energy"].value; if (element==""){ alert("Energy can not be null!"); form.elements["stepForm.energy"].focus(); return false; } } if (typeof form.elements["stepForm.focus"]!= "undefined"){ var element = form.elements["stepForm.focus"].value; if (element==""){ alert("Focus can not be null!"); form.elements["stepForm.focus"].focus(); return false; } } if (typeof form.elements["stepForm.ovlData"]!= "undefined"){ var element = form.elements["stepForm.ovlData"].value; if (element==""){ alert("OVL Data can not be null!"); form.elements["stepForm.ovlData"].focus(); return false; } } if (typeof form.elements["stepForm.fabName"]!= "undefined"){ var element = form.elements["stepForm.fabName"].value; if (element==""){ alert("Please Select the Fab Area!"); form.elements["stepForm.fabName"].focus(); return false; } } if( typeof form.elements["stepForm.energyStep"]!= "undefined") { if(""==$F("stepForm.energyStep")) { alert("Please input the energyStep"); $("stepForm.energyStep").focus(); return false; } } if( typeof form.elements["stepForm.focusStep"]!= "undefined") { if(""==$F("stepForm.focusStep")) { alert("Please input the energyStep"); $("stepForm.focusStep").focus(); return false; } } form.action="addStepForm.action?ercParams=true"; checkboxSync(); disableButton(); form.submit(); } function checkWaferIdIsEqualSlotId(object){ //第二个参数中的 g 表示全部匹配,i表示忽略大小写 var regS = new RegExp("S","gi"); var regS1=new RegExp("#","gi"); var slotIds; var waferIds; var slotId=object.elements["stepForm.slotId"].value; var waferId=object.elements["stepForm.waferId"].value; if(slotId.indexOf("S")!=-1){ slotIds=slotId.replace(regS,""); }else{ slotIds=slotId.replace(regS1,""); } if(waferId.indexOf("S")!=-1){ waferIds=waferId.replace(regS,""); }else{ waferIds=waferId.replace(regS1,""); } var array=slotIds.split(","); for(var i=0;i<array.length;i++){ if(waferIds.indexOf(array[i])==-1) return false; } return true; } function removeEnter(object) { var regS = new RegExp(/\s*(.*?)\s*(\r\n)\s*/mg); var s = object.value; object.value = s.replace(regS, "$1"); //回车前后的空格都替换掉 } function showWaferId(){ var windowOptions = "directories=no,location=no,width=700,height=500,alwaysRaised=yes,resizable=yes,scrollbars=yes"; var win= window.open('showWaferId.action?w&requestFormId=${requestForm.id}','stepFormWaferid','left=500,top=20,width=150,height=450'); win.focus(); } function showSlotId(){ var win=window.open('showSlotId.action?s&requestFormId=${requestForm.id}','stepFormSlotid','left=500,top=20,width=150,height=450'); win.focus(); } function showWaferIdStr(){ var windowOptions = "directories=no,location=no,width=700,height=500,alwaysRaised=yes,resizable=yes,scrollbars=yes"; var win= window.open('showWaferIdStr.action?w&requestFormId=${requestForm.id}','stepFormWaferid','left=500,top=20,width=150,height=450'); win.focus(); } function showSlotIdStr(){ var win=window.open('showSlotIdStr.action?s&requestFormId=${requestForm.id}','stepFormSlotid','left=500,top=20,width=150,height=450'); win.focus(); } function check(object){ var Number ="0123456789"; var holdStepNo="${requestForm.holdStepNo?if_exists}"; var repositStepNo="${requestForm.ercStepNo?if_exists}"; var stepNo=object.value; for (i = 0; i < stepNo.length;i++){ var c = stepNo.charAt(i); if(Number.indexOf(c)==-1){ alert("StepNo must be number!"); object.value=""; object.focus(); return false; } } /*if(eval(stepNo)>eval(repositStepNo)||eval(stepNo)<eval(holdStepNo) ) { alert("StepNo: "+stepNo+" must be between "+holdStepNo+" and "+repositStepNo); object.value=""; object.focus(); return false; }*/ } function checkRemarkLength(object){ var value=object.value; if(value.length>150){ alert("Remark 最多150个字符"); return false; } var pattern = /[^\x00-\xff]/; if('${requestForm.formType?if_exists}'=="Scan Defect" && pattern.test(object.value)){ alert("只能输入英文!"); object.focus(); return false; } } function checkEqpID(eqpID){ var form = document.forms['stepForm']; var areaValue=form.elements["stepForm.area"].value; form.elements["stepForm.eqpModeName"].value=""; if(typeof form.elements["stepForm.recipe"]!= "undefined") form.elements["stepForm.recipe"].value=""; if(typeof form.elements["stepForm.trackOutRecipe"]!= "undefined") form.elements["stepForm.trackOutRecipe"].value=""; var eqpId=eqpID.value; var eqpValue=form.elements["stepForm.eqpModeName"].value; var reg=/\s/g; var stringLength=eqpValue.replace(reg,""); if(eqpId=="Eqp ID"){ if(stringLength.length>7) {alert("最多7个字符!请重新输入Eqp ID"); form.elements["stepForm.eqpModeName"].value=""; form.elements["stepForm.eqpModeName"].focus(); return false; } if(eqpValue=="dummy" ||eqpValue=="DUMMY" || eqpValue.indexOf("DMY02")!=-1){ //DMY02 for cension if(areaValue=="PHOTO" || areaValue=="S1A-PHOTO" || areaValue=="S1B-PHOTO" ||areaValue=="S1C-PHOTO" || areaValue=="M1A-PHOTO" || areaValue=="M1B-PHOTO" || areaValue=="M1C-PHOTO" || areaValue=="SXA-PHOTO" || areaValue=="SXC-PHOTO") { alert("Please do not set area as PHOTO for DUMMY Eqp ID!"); form.elements["stepForm.area"].focus(); return false; } if(typeof form.elements["stepForm.recipe"]!= "undefined"){ form.elements["stepForm.recipe"].value="DUMMY"; form.elements["stepForm.recipe"].className="TextBoxReadOnly"; } } }else if(typeof form.elements["stepForm.recipe"]!= "undefined") form.elements["stepForm.recipe"].className="TextBoxReadWrite"; } </script> <#if requestForm.status=="DRAFT"> <div class="app"> <h3 class="center">Add Runcard Step</h3> <@ww.form name="'stepForm'" action="'addStepForm'" validate="'true'" method="'post'"> <@ww.hidden name="'requestFormId'" value="${requestForm.id}"/> <@ww.hidden name="'stepFormId'"/> <@ww.hidden name="'command'"/> <@ww.hidden name="'stepForm.RCP'"/> <@ww.hidden name="'stepForm.noStepNo'"/> <@ww.hidden name="'stepForm.stepNoMes'"/> <#--@ww.hidden name="'maxStep'"/--> <input type="hidden" name="stepForm.measurementSpecNo" id="measurementSpecNo" value="<#if requestForm.formType?if_exists=='Scan Defect'>1<#else><@ww.property value='stepForm.measurementSpecNo'/></#if>"/> <TABLE STYLE="display:none" BORDER=0 CELLSPACING=0 CELLPADDING=0> <@ww.select name="'strCondition'" list="strConditions" listKey="wafers" listValue="description" theme="'simple'"/> </TABLE> <table border="0" cellspacing="1" cellpadding="8" width="100%"> <tr class="b"> <td>*&nbspFab Area:</td> <td> <@ww.select name="'stepForm.fabName'" list="@com.smics.apps.erc.ErcConstants@FabAreaList" onchange="'changeShow(this)'" required="true" emptyOption="true" theme="'simple'"/> </td> <#if requestForm.formType?if_exists=="Scan Defect"> <td/><td/> <@ww.textfield name="'stepForm.stepNo'" id="stepNo" size="10" theme="'simple'" cssStyle="'display:none'"/> <input type="button" value="Go" onclick="getStepLotInfo();" style="display:none"> <input type="button" name="getStepList" value="ViewFutureStep" class="btn" onclick="doViewFutureStep('stepNo','getStepLotInfo()');">  <#else> <td>StepNo:</td> <td> <#if !stepForm?exists || stepForm.stepSerialNo?default(0)==0 || !(stepForm.stepQtimes?has_content || stepForm.stepQtimeEnds?has_content)> NA <@ww.checkbox name="'noStepNoPar'" fieldValue="'true'" theme="'simple'"/> <@ww.textfield name="'stepForm.stepNo'" id="stepNo" size="10" theme="'simple'" onblur="'check(this)'"/> <input type="button" value="Go" onclick="getStepLotInfo();" > <input type="button" name="getStepList" value="ViewFutureStep" class="btn" onclick="doViewFutureStep('stepNo','getStepLotInfo()');">  <#else> NA <@ww.checkbox name="'noStepNoPar'" fieldValue="'true'" theme="'simple'" disabled="true"/> <@ww.textfield name="'stepForm.stepNo'" size="10" theme="'simple'" disabled="true"/> </#if> <font color="red">(RunCard Step与MES Step做Compare)</font></td> </#if> </tr> <tr class="b" id="area" > <td>*&nbspArea:</td> <td colspan="3"> <@ww.select name="'stepForm.area'" list="areaList" onchange="'changeByArea(this)'" required="true" emptyOption="true" theme="'simple'"/> <#--@ww.select name="'stepForm.area'" onchange="'changeByArea(this)'" required="true" emptyOption="true" theme="'simple'"/-->                      <#if stepForm?exists> Check With RCP<@ww.checkbox name="'rcpCheck'" fieldValue="'true'" theme="'simple'" onclick="'defalutValue();'"/> <#else> Check With RCP<@ww.checkbox name="'rcpCheck'" fieldValue="'true'" value="true" theme="'simple'" onclick="'defalutValue();'"/> </#if> </td> </tr> <tr id="showRemark" style="display:none;background: #efefef"> <td colspan="4"> <pre><font color="red" face="Arial">Is it Batch run at chamber: ADASM01_N&ADASM01_O or ADASM02_P&ADASM02_G or BDASM91_H&BDASM91_P If it is auto run, please fill in the special Eqp Group : ADVF_RCN_1&ADVF_RCO_1 or ADVF_RCP_1&ADVF_RCG_1 or ADVF_RCH_1&ADVF_RCP_2</font></pre> </td> </tr> <tr class="b"> <td>*&nbspEquipment:</td> <td colspan="3"><@ww.select name="'stepForm.eqpMode'" list="{'Eqp ID','Eqp Group'}" required="true" onchange="'checkEqpID(this)'" theme="'simple'"/>:<@ww.textfield name="'stepForm.eqpModeName'" size="25" theme="'simple'" onblur="'eqpToUpper(this)'" /><font color="red">   (Eqp Group区分大小写.输入的Eqp ID 的最大长度为7位!)</font></td> </tr> <#if command=="PHOTO" || command=="S1A-PHOTO" || command=="S1B-PHOTO" || command=="S1C-PHOTO" || command=="M1A-PHOTO" || command=="M1B-PHOTO" || command=="M1C-PHOTO"|| command=="SXA-PHOTO" || command=="SXC-PHOTO"> <tr class="b"> <td>*&nbspTrack Recipe</td> <td colspan="3"><@ww.textfield name="'stepForm.trackOutRecipe'" value="'${stepForm.trackOutRecipe?default('waiting Pi_Run Result'?if_exists)}'" size="40" theme="'simple'"/>   <font color="red">(区分大小写)</font></td> </tr> <tr class="b"> <td>*&nbspScanner Recipe</td> <td colspan="3"><@ww.textfield name="'stepForm.scannerRecipe'" value="stepForm.scannerRecipe" size="40" theme="'simple'"/>   <font color="red">(区分大小写)</font> &nbsp<@ww.radio name="'stepForm.recipeType'" list="@com.smics.apps.erc.ErcConstants@recipeTypes" value="'${stepForm.recipeType?default('Production'?if_exists)}'" onclick="'changeShow(this)'" theme="'simple'"/></td> </tr> <#else> <tr class="b" > <td>*&nbspRecipe:</td> <td colspan="3"><input type="input" name="stepForm.recipe" size="40" value="<#if stepFormId?exists || (stepForm?exists && stepForm.recipe?exists)><@ww.property value='stepForm.recipe'/><#else>waiting Pi_Run Result</#if>"/>   <font color="red">(区分大小写)</font></td> </tr> </#if> <tr class="b"> <td>*&nbspWafer ID:</td> <td colspan="3"> <#if requestForm.formType?if_exists=="Scan Defect"> <input type="text" readonly="true" name="stepForm.waferId" value="<@ww.property value="requestForm.waferId"/>" id="wId" size="75" onclick="showWaferId()"/> Qty.:<input type="text" name="stepForm.waferIdQty" value="<@ww.property value="requestForm.lotQty"/>" size="10" id="wQty" Style="background: #efefef;border:none"/> <#else> <#if requestForm.ercCategory?if_exists=="STR"> <input type="text" readonly="true" name="stepForm.waferId" value="<@ww.property value="stepForm.waferId"/>" id="wId" size="75" onclick="showWaferIdStr()"/> Qty.:<input type="text" name="stepForm.waferIdQty" value="<@ww.property value="stepForm.waferIdQty"/>" size="10" id="wQty" Style="background: #efefef;border:none"/> <#else> <input type="text" readonly="true" name="stepForm.waferId" value="<@ww.property value="stepForm.waferId"/>" id="wId" size="75" onclick="showWaferId()"/> Qty.:<input type="text" name="stepForm.waferIdQty" value="<@ww.property value="stepForm.waferIdQty"/>" size="10" id="wQty" Style="background: #efefef;border:none"/> </#if> </#if> </td> </tr> <tr class="b"> <td>MeasSlotId:</td> <#if requestForm.ercCategory?if_exists=="STR"> <td colspan="3"><input type="text" readonly="true" name="stepForm.slotId" value="<@ww.property value="stepForm.slotId"/>" id="sId" size="75" onclick="showSlotIdStr();"/> Qty.:<input type="text" name="stepForm.slotIdQty" value="<@ww.property value="stepForm.slotIdQty"/>" size="10" id="sQty" Style="background: #efefef;border:none"/></td> <#else> <td colspan="3"><input type="text" readonly="true" name="stepForm.slotId" value="<@ww.property value="stepForm.slotId"/>" id="sId" size="75" onclick="showSlotId();"/> Qty.:<input type="text" name="stepForm.slotIdQty" value="<@ww.property value="stepForm.slotIdQty"/>" size="10" id="sQty" Style="background: #efefef;border:none"/></td> </#if> </tr> <tr class="b"> <td>*&nbspContamination Flag: </td> <td colspan="3"> <#if stepForm?exists && requestForm.fabId?default('')=="S1" && stepForm.fabName?default('')=="C"> <@ww.select name="'stepForm.contaminationFlag'" onchange="'checkNA(this)'" list="{'11--Without PR and Metal','12--With PR Without Metal','13--With Metal Without PR','14--With Metal With Barc','15--With AL Without PR','16--Thin Wafer','17--With AL and PR','NA'}" headerKey="'Please Select'" headerValue="'Please Select'" emptyOption="false" theme="'simple'"/> <#elseif stepForm?exists && requestForm.fabId?default('')=="M1"> <@ww.select name="'stepForm.contaminationFlag'" onchange="'checkNA(this)'" list="{'1--Front end w/o PR','2--Front end w/i PR (photo-resist)','3--TiSix (eDRAM process)','4--Metal (W/Ti/TiN/AI-Cu) w/o PR','5--Metal (W/Ti/TiN/AI-Cu) w/i PR (photo-resist)','6--Cobalt salicide','6.5--Cosix process b/f glue layer dep','7--Metal CAP dielectric','11--Without PR and Metal (Cu line)','12--With PR without Metal (Cu line)','13--With metal without PR (Cu line)','14--With metal with barc (Cu line)','15--With AL without PR (Cu line)','16--Thin wafer(Cu line)','17--With AL and PR(Cu line)','21--Without PR and Metal (Au line)','22--With PR without Metal (Au line)','23--With metal without PR (Au line)','24--With metal with PR (Au line)','NA'}" headerKey="'Please Select'" headerValue="'Please Select'" emptyOption="false" theme="'simple'"/> <#elseif stepForm?exists && requestForm.fabId?default('')=="SX"> <@ww.select name="'stepForm.contaminationFlag'" onchange="'checkNA(this)'" list="{'1--Front end w/o PR','2--Front end w/i PR (photo-resist)','3--TiSix (eDRAM process)','4--Metal (W/Ti/TiN/AI-Cu) w/o PR','5--Metal (W/Ti/TiN/AI-Cu) w/i PR (photo-resist)','6--Cobalt salicide','6.5--Cosix process b/f glue layer dep','7--Metal CAP dielectric','11--Without PR and Metal (Cu line)','12--With PR without Metal (Cu line)','13--With metal without PR (Cu line)','14--With metal with barc (Cu line)','15--With AL without PR (Cu line)','16--Thin wafer(Cu line)','17--With AL and PR(Cu line)','21--Without PR and Metal (Au line)','22--With PR without Metal (Au line)','23--With metal without PR (Au line)','24--With metal with PR (Au line)','NA'}" headerKey="'Please Select'" headerValue="'Please Select'" emptyOption="false" theme="'simple'"/> <#elseif stepForm?exists && stepForm.fabName?default('')=="FAB15"> <@ww.select name="'stepForm.contaminationFlag'" onchange="'checkNA(this)'" list="{'1--Front end w/o PR','2--Front end w/i PR (photo-resist)','3--TiSix (eDRAM process)','4--Metal (W/Ti/TiN/AI-Cu) w/o PR','5--Metal (W/Ti/TiN/AI-Cu) w/i PR (photo-resist)','6--Cobalt salicide','6.5--Cosix process b/f glue layer dep','7--Metal CAP dielectric','NA'}" headerKey="'Please Select'" headerValue="'Please Select'" emptyOption="false" theme="'simple'"/> <#elseif stepForm?exists && stepForm.fabName?default('')=="FABJ1A"> <@ww.select name="'stepForm.contaminationFlag'" onchange="'checkNA(this)'" list="{'NA'}" headerKey="'Please Select'" headerValue="'Please Select'" emptyOption="false" theme="'simple'"/> <#elseif stepForm?exists && (stepForm.fabName?default('')=="SILTECH" || stepForm.fabName?default('')=="FAB9")> <@ww.select name="'stepForm.contaminationFlag'" onchange="'checkNA(this)'" list="{'NA'}" headerKey="'Please Select'" headerValue="'Please Select'" emptyOption="false" theme="'simple'"/> <#else> <@ww.select name="'stepForm.contaminationFlag'" onchange="'checkNA(this)'" list="{'1--Front end w/o PR','2--Front end w/i PR (photo-resist)','3--TiSix (eDRAM process)','4--Metal (W/Ti/TiN/AI-Cu) w/o PR','5--Metal (W/Ti/TiN/AI-Cu) w/i PR (photo-resist)','6--Cobalt salicide','6.5--Cosix process b/f glue layer dep','7--Metal CAP dielectric','NA'}" headerKey="'Please Select'" headerValue="'Please Select'" emptyOption="false" theme="'simple'"/> </#if> <b> current lot's contamination level: <#if stepForm?exists && stepForm.lotCl?has_content> <font color="#FF00">${stepForm.lotCl?if_exists}</font> <#else> Please refer to Queen. </#if></b> </td> </tr> <tr class="b"> <td colspan="4"><strong>实际下货Tools:</strong></td> </tr> <#if requestForm.formType?if_exists!="Scan Defect"> <tr class="b"> <td>*&nbspRemark:</td> <td colspan="3"><@ww.textarea name="'stepForm.remark'" value="stepForm.remark" onblur="'checkRemarkLength(this)'" cols="35" rows="3" theme="'simple'"/><font color="red">(如果输入中文,Runcard只能Manual Run!!)</font></td> </tr> </#if> <tr class="b"> <td>EDC Plan Name:</td> <!--onchange="showSpec();" --> <td colspan="3"><input type="text" name="stepForm.ecdPlanName" onchange="clearSpec();" <#if requestForm.formType?if_exists=="Scan Defect">value="DYINDF1H" readonly="true" <#else>value="<@ww.property value="stepForm.ecdPlanName"/>" </#if> size="20" /><#if requestForm.formType?if_exists!="Scan Defect"><input type="button" onclick="showSpec();" value="Go"></#if></td> </tr> <!-- Modity--> <tr class="b"> <td>量测规格SPEC</td> <td colspan="3"> <#if requestForm.formType=="Scan Defect"> <@ww.textarea name="'stepForm.spec'" cssStyle="'background: #efefef;border:none'" value="'DMY-09LG-LOOP-DFT:EA:100000:'" cols="65" readonly="true" rows="2" theme="'simple'"/> <#else> <@ww.textarea name="'stepForm.spec'" cssStyle="'background: #efefef;border:none'" id="spec" value="stepForm.spec" cols="65" readonly="true" rows="2" theme="'simple'"/> </#if> </td> </tr> <#if command=="PHOTO" || command=="S1A-PHOTO" || command=="S1B-PHOTO" || command=="S1C-PHOTO" || command=="M1A-PHOTO" || command=="M1B-PHOTO" || command=="M1C-PHOTO" || command=="SXA-PHOTO" || command=="SXC-PHOTO"> <#if stepForm.recipeType?default('')?if_exists=="Engineering"> <tr class="b" > <td>*&nbspBatchType:</td> <td colspan="3"><@ww.radio name="'stepForm.batchType'" list="@com.smics.apps.erc.ErcConstants@batchTypes" value="'${stepForm.batchType?default('Production'?if_exists)}'" onclick="'changeShow(this)'" theme="'simple'"/></td> </tr> </#if> <tr class="b" > <td>*&nbspReticleID:</td> <td colspan="3"><@ww.textfield name="'stepForm.reticleId'" value="stepForm.reticleId" size="65" theme="'simple'"/></td> </tr> <tr class="b" > <td>*&nbspEnergy:</td> <td colspan="3"><@ww.textfield name="'stepForm.energy'" onblur="'changeValeuToNumber(this)'" value="stepForm.energy" size="65" theme="'simple'"/></td> </tr> <#if stepForm.batchType?default('')?if_exists=="Matrix" && stepForm.recipeType?default('')?if_exists=="Engineering" > <tr class="b" > <td>*&nbspEnergyStep:</td> <td colspan="3"><@ww.textfield name="'stepForm.energyStep'" id="energyStep" onblur="'changeValeuToNumber(this)'" size="65" theme="'simple'"/> <font color="red">(Value:-1000.0~1000.0)</font></td> </tr> </#if> <tr class="b"> <td>*&nbspFocus:</td> <td colspan="3"><@ww.textfield name="'stepForm.focus'" onblur="'changeValeuToNumber(this)'" value="stepForm.focus" size="65" theme="'simple'"/></td> </tr> <#if stepForm.batchType?default('')?if_exists=="Matrix" && stepForm.recipeType?default('')?if_exists=="Engineering"> <tr class="b"> <td>*&nbspFocusStep:</td> <td colspan="3"><@ww.textfield name="'stepForm.focusStep'" id="focusStep" onblur="'changeValeuToNumber(this)'" size="65" theme="'simple'"/> <font color="red">(Value:-2.00~2.00)</font></td> </tr> </#if> <tr class="b"> <td>*&nbspOVL Data:</td> <td colspan="3"><textarea name="stepForm.ovlData" readonly="true" id="stepForm.ovlData" value="<@ww.property value="stepForm.ovlData"/>" onclick="showOvl();" cols="65" rows="3"><@ww.property value="stepForm.ovlData"/></textarea></td> </tr> </#if> </table> <#if !stepForm?exists || stepForm.stepSerialNo?default(0)==0 || !(stepForm.stepQtimes?has_content || stepForm.stepQtimeEnds?has_content)> <h3>Runcard Qtime Inforamtion</h3> <table width="100%"> <#if stepQtimes?has_content> <tr> <td bgcolor="#87CEFF" colspan=9> <b> Below information <font color="#FF0000">just for reference</font>,Qtime Configuration Start at this Step in Mainflow,<font color="#FF0000">need setting at 'addmainflowQtime'</font>: </b> </td> </tr> <tr > <td bgcolor="#DCDCDC" width=15% colspan=2><b>Qtime info:</b></td> <td bgcolor="#DCDCDC" colspan=7> <TABLE border=0 cellSpacing=1 cellSpacing=1 width="100%"> <TR> <TD ><font color="#0000FF"><B><Red>StrStepSeq</font></TD> <TD >EndStepSeq</TD> <TD >IntervalTime</TD> <TD >ControlType</TD> <TD >ExpireAction</TD> </TR> <#list stepQtimes as stepQtimeStr> <TR> <TD ><font color="#0000FF"><B>${stepQtimeStr.strStepSeq?if_exists}</font></TD> <TD >${stepQtimeStr.endStepSeq?if_exists}</TD> <TD >${stepQtimeStr.intervalTime?if_exists}</TD> <TD >${stepQtimeStr.controlType?if_exists}</TD> <TD >${stepQtimeStr.expireAction?if_exists}</TD> </TR> </#list> </Table> </td> </tr> </#if> <#if stepQtimeEnds?has_content> <tr> <td bgcolor="#87CEFA" colspan=9> <b> Qtime Configuration <font color="#0000FF">End </font> at this Step in Mainflow,pls select the 'Action'. </b> </td> </tr> <tr style="display:none"> <td> <@ww.textfield name="'allEndQtimeHandle'" theme="'simple'" /> </TD> </tr> <tr> <td bgcolor="#E6E6FA" width=15% colspan=2><b>End Qtime info:</b></td> <td bgcolor="#E6E6FA" colspan=7> <TABLE border=0 cellSpacing=1 cellSpacing=1 width="100%"> <TR> <TD >Plan ID </TD> <TD >Plan Ver </TD> <TD >StrStepSeq</TD> <TD ><font color="#0000FF"><B>EndStepSeq</font></TD> <TD >IntervalTime</TD> <TD >ControlType</TD> <TD >ExpireAction</TD> <TD >Action</TD> </TR> <#list stepQtimeEnds as stepQtimeEnd> <TR> <TD >${stepQtimeEnd.planId?if_exists}</TD> <TD >${stepQtimeEnd.planVer?if_exists}</TD> <TD >${stepQtimeEnd.strStepSeq?if_exists}</TD> <TD ><font color="#0000FF"><B>${stepQtimeEnd.endStepSeq?if_exists}</font></TD> <TD >${stepQtimeEnd.intervalTime?if_exists}</TD> <TD >${stepQtimeEnd.controlType?if_exists}</TD> <TD >${stepQtimeEnd.expireAction?if_exists}</TD> <TD > <@ww.select name="'endQtimeHanle${stepQtimeEnd.id}'" list="{'Mapping','NULL'}" emptyOption="false" theme="'simple' " onchange="'EndQtimeHanle(${stepQtimeEnd.id})'"/> </TD> </TR> </#list> </Table> </td> </tr> </#if> </table> </#if> <table width="100%"> <tr class="a"> <tr class="b"><td colspan="4" class="center"><input type="button" onclick="checkPageToSubmit()" value="Submit" class="btn1" />      <input type="Button" class="btn1" value="Close" onclick="window.close();"></td> </tr> </table> </@ww.form> <h3>Runcard Step Inforamtion</h3> <#assign showAction = true > <#assign showWGAction = true > <#include "/user/stepForm/includeStepForm.ftl"/> <#else> <script> alert("This runcard had been issued,please apply new application!"); window.close(); </script> </#if> </div> <script> function doViewFutureStep(callField,functionCall) { var employeeSearchPopup; var windowOptions = "directories=no,location=no,width=700,height=500,alwaysRaised=yes,resizable=yes,scrollbars=yes"; employeeSearchPopup = window.open('../user/popUpFetchStepInfo.action?method=peFetchStepInfo&catalogue=StepSeq&fetchDirection=0&requestFormId=${requestForm.id}', 'employeeSearchPopup', windowOptions); employeeSearchPopup.focus(); callback = function (employeeNo){ document.getElementById(callField).value = employeeNo; employeeSearchPopup.close(); if (functionCall!=null) eval(functionCall); }; } </script>
最新发布
12-03
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值