893ce3f5faf0e55db813ed146a4e80c11e713be6.svn-base 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?xml-stylesheet href="../../css/body.css" type="text/css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <xhtml:head>
  5. <xhtml:title>
  6. <![CDATA[炼钢作业 >> 炼钢作业进程 >> 炼钢工序管理(UIG030010)]]>
  7. </xhtml:title>
  8. <model id="model1">
  9. <instance id="instance1">
  10. <root xmlns="">
  11. <gridData>
  12. <gridR/>
  13. <gridL/>
  14. </gridData>
  15. <formData>
  16. <PLAN_CHARGE_NO/>
  17. <STL_GRD/>
  18. <CAST_SEQ/>
  19. <INSTR_TREAT_RT/>
  20. <PROC_CD/>
  21. <REGISTER/>
  22. <REGTSTAMP/>
  23. </formData>
  24. <resData/>
  25. <reqData/>
  26. <searchData>
  27. <CHARGE_NO/>
  28. <COMM_CD/>
  29. </searchData>
  30. <initData>
  31. <INIT_CHARGE_NO>
  32. </INIT_CHARGE_NO>
  33. <INIT_COMM_CD>
  34. </INIT_COMM_CD>
  35. </initData>
  36. <comboData>
  37. <resData/>
  38. <procCd>
  39. <bof>
  40. <item>
  41. <label>1#转炉</label>
  42. <value>B1</value>
  43. </item>
  44. <item>
  45. <label>2#转炉</label>
  46. <value>B2</value>
  47. </item>
  48. </bof>
  49. <cas>
  50. <item>
  51. <label>2#CAS炉</label>
  52. <value>C2</value>
  53. </item>
  54. <item>
  55. <label>1#CAS炉</label>
  56. <value>C1</value>
  57. </item>
  58. </cas>
  59. <lf>
  60. <item>
  61. <label>2#LF炉</label>
  62. <value>L2</value>
  63. </item>
  64. <item>
  65. <label>1#LF炉</label>
  66. <value>L1</value>
  67. </item>
  68. </lf>
  69. <rh>
  70. <item>
  71. <label>2#RH炉</label>
  72. <value>R2</value>
  73. </item>
  74. <item>
  75. <label>1#RH炉</label>
  76. <value>R1</value>
  77. </item>
  78. </rh>
  79. <ccm>
  80. <item>
  81. <label>2#连铸机</label>
  82. <value>J2</value>
  83. </item>
  84. <item>
  85. <label>1#连铸机</label>
  86. <value>J1</value>
  87. </item>
  88. </ccm>
  89. </procCd>
  90. </comboData>
  91. <MESSAGES/>
  92. </root>
  93. </instance>
  94. <script type="javascript" ev:event="xforms-ready">
  95. <![CDATA[
  96. /*
  97. *初始化炉次号,工序下来框
  98. */
  99. InitParams();
  100. combo2.value = "B";
  101. //model.setValue("/root/searchData/COMM_CD","B",true);
  102. ]]>
  103. </script>
  104. </model>
  105. <script type="javascript" src="../../js/boaCommon.js"/>
  106. <script type="javascript" src="../../js/boaMsg.js"/>
  107. <script type="javascript">
  108. <![CDATA[
  109. /*
  110. *全局变量,函数
  111. */
  112. // 记录表格选中行数
  113. var SELECTED_ROW_COUNT = 0;
  114. /**
  115. *@function InitParams
  116. *@param node
  117. *@return null
  118. *@description 获取页面初始化参数,以及登陆该页面的工作人员信息
  119. */
  120. function InitParams()
  121. {
  122. commSubmit("UIG030010-service","success","glueAction.do");
  123. commAppendData("/root/initData/INIT_CHARGE_NO/SECOND_INIT_RESULT_VO","/root/resData/SECOND_INIT_RESULT_VO");
  124. commAppendData("/root/initData/INIT_COMM_CD/FIRST_INIT_RESULT_VO","/root/resData/FIRST_INIT_RESULT_VO");
  125. model.refresh();
  126. }
  127. /**
  128. *@function getGridRowCnt
  129. *@param datagrid
  130. *@return number gridRowCnts
  131. *@description 获取表格的行数 ,注意调用函数时 参数必须是字符串类型
  132. */
  133. function getGridRowCnt(gridID)
  134. {
  135. var grid = document.all(gridID);
  136. var gridNodeset = grid.nodeset;
  137. var gridRowCnts = parseInt(model.getXPathValue("count(" + gridNodeset + ")"));
  138. return gridRowCnts;
  139. }
  140. /**
  141. * @function : find
  142. * @param
  143. * @return
  144. * @description 按钮查询方法
  145. */
  146. function find()
  147. {
  148. if(model.getValue("/root/searchData/CHARGE_NO") == "" ||model.getValue("/root/searchData/COMM_CD") == "" )
  149. {
  150. alert("炉次号,工序不能为空!");
  151. }
  152. else
  153. {
  154. model.removenode("/root/reqData");
  155. commSendReq("/root/searchData");
  156. commSubmit("UIG030010-service","find","glueAction.do");
  157. // 将查询结果Apped到datagrid上
  158. commAppendData("/root/gridData/gridR/SmsAllProgResult_VO","/root/resData/SmsAllProgResult_VO");
  159. commAppendData("/root/gridData/gridL/SmsProgProgResult_VO","/root/resData/SmsProgProgResult_VO");
  160. // 取datagrid中的第一条记录的几个字段copy 到 formData上. **这里是因为这个字段在datagid 的每条记录中都是一样的,否则不能这样用
  161. var plChargeNo = model.getValue("/root/gridData/gridR/SmsAllProgResult_VO/SmsAllProgResult_Row[1]/PLAN_CHARGE_NO");
  162. var stlKind = model.getValue("/root/gridData/gridR/SmsAllProgResult_VO/SmsAllProgResult_Row[1]/STL_GRD");
  163. var castSeq = model.getValue("/root/gridData/gridR/SmsAllProgResult_VO/SmsAllProgResult_Row[1]/CAST_SEQ");
  164. var procCD = model.getValue("/root/gridData/gridR/SmsAllProgResult_VO/SmsAllProgResult_Row[1]/PROC_CD");
  165. var instrTreatRT = model.getValue("/root/gridData/gridR/SmsAllProgResult_VO/SmsAllProgResult_Row[1]/INSTR_TREAT_RT");
  166. model.setValue("/root/formData/PLAN_CHARGE_NO" , plChargeNo);
  167. model.setValue("/root/formData/STL_GRD" , stlKind);
  168. model.setValue("/root/formData/CAST_SEQ" , castSeq);
  169. model.setValue("/root/formData/PROC_CD" , procCD);
  170. model.setValue("/root/formData/INSTR_TREAT_RT",instrTreatRT);
  171. if(model.getValue("/root/searchData/COMM_CD") == "B"){
  172. model.copyNode("/root/comboData/resData","/root/comboData/procCd/bof");
  173. }if(model.getValue("/root/searchData/COMM_CD") == "C"){
  174. model.copyNode("/root/comboData/resData","/root/comboData/procCd/cas");
  175. }if(model.getValue("/root/searchData/COMM_CD") == "R"){
  176. model.copyNode("/root/comboData/resData","/root/comboData/procCd/rh");
  177. }if(model.getValue("/root/searchData/COMM_CD") == "L"){
  178. model.copyNode("/root/comboData/resData","/root/comboData/procCd/lf");
  179. }if(model.getValue("/root/searchData/COMM_CD") == "J"){
  180. model.copyNode("/root/comboData/resData","/root/comboData/procCd/ccm");
  181. }
  182. model.refresh();
  183. statusChange();
  184. }
  185. }
  186. function statusChange(){
  187. //对记录中的不同工序BOF,CAS,LF,RH,CCM加背景色,
  188. var targNode = datagridR.nodeset;
  189. var nodeCnt = parseInt(model.getXPathValue("count(" + targNode + ")"));
  190. for (var i = 1;i<=nodeCnt;i++)
  191. {
  192. var treatCode = instance1.selectSingleNode(targNode + "[" + i + "]/TREAT_CD");
  193. if(treatCode.value.substr(0,1) == "B")
  194. {
  195. datagridR.rowStyle(i, "data", "background-color") = "#FEFF56";
  196. }
  197. else if(treatCode.value.substr(0,1) == "R")
  198. {
  199. datagridR.rowStyle(i, "data", "background-color") = "#FF3399";
  200. }
  201. else if(treatCode.value.substr(0,1) == "L")
  202. {
  203. datagridR.rowStyle(i, "data", "background-color") = "#99ccff";
  204. }
  205. else if(treatCode.value.substr(0,1) == "C")
  206. {
  207. datagridR.rowStyle(i, "data", "background-color") = "#3399FF";
  208. }
  209. else if(treatCode.value.substr(0,1) == "J")
  210. {
  211. datagridR.rowStyle(i, "data", "background-color") = "#33CC33";
  212. }
  213. else if(treatCode.value.substr(0,1) == "S")
  214. {
  215. datagridR.rowStyle(i, "data", "background-color") = "#0033CC";
  216. }
  217. }
  218. model.refresh();
  219. //查询操作执行完成以后取消选中行状,选中行背景色,datagridL中选中行数清零,可编辑状态还原
  220. var nodeCnt2 = getGridRowCnt("datagridL");
  221. for(var j = 1;j<=nodeCnt2;j++)
  222. {
  223. datagridL.valueMatrix(j, datagridL.colRef("CHK"))="N";
  224. datagridL.cellAttribute("editable", j,datagridL.colRef("TREAT_DTIME")) = "false";
  225. datagridL.cellAttribute("editable", j,datagridL.colRef("PROC_CD")) = "false";
  226. }
  227. datagridL.rebuildStyle();
  228. datagridL.clearStatus();
  229. SELECTED_ROW_COUNT = 0;
  230. }
  231. /**
  232. * @function : chkValu_change
  233. * @param datagrid , int row
  234. * @return
  235. * @description 通过CHK控制选中行状态,包括行背景色,是否可编辑,是否可操作
  236. */
  237. function chkValu_change(gridID, row)
  238. {
  239. var grid = document.all(gridID);
  240. var chk = grid.valueMatrix(row, grid.colRef("CHK"));
  241. if(chk == "Y")
  242. {
  243. // 修改选中行的背景色
  244. grid.rowStyle(row, "data", "background-color") = "#FEFF56";
  245. // 设置选中行为可编辑状态
  246. datagridL.cellAttribute("editable", datagridL.row,datagridL.colRef("TREAT_DTIME")) = "true";
  247. datagridL.cellAttribute("editable", datagridL.row,datagridL.colRef("PROC_CD")) = "true";
  248. /*
  249. *判断选中行工序是否发 生。
  250. *在datagridL中查找是否有工序号等当前行工序号的记录,如果有则该工序已经发生,可以编辑,否则不能编辑。
  251. */
  252. var targetNode = datagridR.nodeset;
  253. var dataCnt = parseInt(model.getXPathValue("count("+targetNode+")"));
  254. var tag = true;
  255. for(var j = 1;j<=dataCnt;j++)
  256. {
  257. var item = instance1.selectSingleNode(targetNode + "[" + (j) + "]/TREAT_CD");
  258. var itemValue = item.value;
  259. var item2 = instance1.selectSingleNode("/root/gridData/gridL/SmsProgProgResult_VO/SmsProgProgResult_Row[" + datagridL.row + "]/SM_CD");
  260. var itemValue2 = item2.value;
  261. if(itemValue == itemValue2)
  262. {
  263. var tag = false;
  264. break;
  265. }
  266. }
  267. // 操作尚未发生,进行插入
  268. if( tag == true)
  269. {
  270. datagridL.rowStatus(datagridL.row) = 1;
  271. }
  272. }
  273. // 如果取消行CHK选取状态,则修改行的CHK值,背景色,datagridL中选中行数减1
  274. else if(chk == "N" || chk == null)
  275. {
  276. datagridL.cellAttribute("editable", datagridL.row,datagridL.colRef("TREAT_DTIME")) = "false";
  277. datagridL.cellAttribute("editable", datagridL.row,datagridL.colRef("PROC_CD")) = "false";
  278. grid.rebuildStyle(row,0,row,grid.cols-1);
  279. datagridL.rowStatus(datagridL.row)= 0;
  280. }
  281. datagridR.rebuild();
  282. }
  283. function remove(){
  284. // 清除reqData节点下的值
  285. model.removenode("/root/reqData");
  286. commMultiUpdate(datagridL,"/root/reqData","A",true,"rowStuts");
  287. // 将formData中的节点值copy到reqData中
  288. var dataCnt = getGridRowCnt("datagridL");
  289. for(var i=1;i<=dataCnt;i++)
  290. {
  291. var chk = datagridL.valueMatrix(i,datagridL.colRef("CHK"));
  292. if(chk == "Y")
  293. {
  294. SELECTED_ROW_COUNT = SELECTED_ROW_COUNT + 1;
  295. }
  296. model.duplicate("/root/reqData/SmsProgProgResult_Row[" + i + "]", "/root/searchData/CHARGE_NO");
  297. }
  298. // 判断作为参数的reqDAta节点中是否为空
  299. if(SELECTED_ROW_COUNT == 0)
  300. {
  301. alert("录入数据错误!");
  302. return ;
  303. }
  304. commSubmit("UIG030010-service","dele","glueAction.do");
  305. // 修改SUCCESS以后,自动执行查询,但没把获得的值从resData Append到gridR
  306. commAppendData("/root/gridData/gridR/SmsAllProgResult_VO","/root/resData/SmsAllProgResult_VO");
  307. model.refresh();
  308. statusChange();
  309. alert(" 删除成功 ");
  310. }
  311. /**
  312. * @function : save
  313. * @param
  314. * @return
  315. * @description 按钮保存方法
  316. */
  317. function save()
  318. {
  319. // 清除reqData节点下的值
  320. model.removenode("/root/reqData");
  321. commMultiUpdate(datagridL,"/root/reqData","A",true,"rowStuts");
  322. // 将formData中的节点值copy到reqData中
  323. var dataCnt = getGridRowCnt("datagridL");
  324. for(var i=1;i<=dataCnt;i++)
  325. {
  326. var chk = datagridL.valueMatrix(i,datagridL.colRef("CHK"));
  327. if(chk == "Y")
  328. {
  329. SELECTED_ROW_COUNT = SELECTED_ROW_COUNT + 1;
  330. if(datagridL.valueMatrix(i,datagridL.colRef("PROC_CD")) == ""){
  331. alert(" 工序号不能为空! ");
  332. return ;
  333. }
  334. if(datagridL.valueMatrix(i,datagridL.colRef("TREAT_DTIME")) == ""){
  335. alert(" 处理时刻不能为空! ");
  336. return ;
  337. }
  338. }
  339. model.duplicate("/root/reqData/SmsProgProgResult_Row[" + i + "]", "/root/searchData/CHARGE_NO");
  340. model.duplicate("/root/reqData/SmsProgProgResult_Row[" + i + "]", "/root/formData/PLAN_CHARGE_NO");
  341. model.duplicate("/root/reqData/SmsProgProgResult_Row[" + i + "]", "/root/formData/REGISTER");
  342. model.duplicate("/root/reqData/SmsProgProgResult_Row[" + i + "]", "/root/formData/REGTSTAMP");
  343. }
  344. // 判断作为参数的reqDAta节点中是否为空
  345. if(SELECTED_ROW_COUNT == 0)
  346. {
  347. alert("录入数据错误!");
  348. return ;
  349. }
  350. commSubmit("UIG030010-service","save","glueAction.do");
  351. // 修改SUCCESS以后,自动执行查询,但没把获得的值从resData Append到gridR
  352. commAppendData("/root/gridData/gridR/SmsAllProgResult_VO","/root/resData/SmsAllProgResult_VO");
  353. model.refresh();
  354. statusChange();
  355. model.setValue("/root/MESSAGES",model.getValue("/root/resData/MESSAGES_VO/MESSAGES_Row"));
  356. alert(model.getValue("/root/MESSAGES"));
  357. }
  358. function rightClick(){
  359. var checkValue = model.getValue("/root/searchData/CHARGE_NO");
  360. if(checkValue == null || checkValue == "")return;
  361. var tstvalue = parseInt(checkValue.substr(4,5),10);
  362. tstvalue = (tstvalue + 1) + "";
  363. var strLen = tstvalue.length;
  364. checkValue = checkValue.substr(0,4);
  365. for(var i = 0 ; i < (5 - strLen) ; i++){
  366. checkValue = checkValue + "0";
  367. }
  368. checkValue = checkValue + tstvalue + "A";
  369. model.setValue("/root/searchData/CHARGE_NO",checkValue);
  370. find();
  371. }
  372. function leftClick(){
  373. var checkValue = model.getValue("/root/searchData/CHARGE_NO");
  374. if(checkValue == null || checkValue == "")return;
  375. var tstvalue = parseInt(checkValue.substr(4,5),10);
  376. tstvalue = (tstvalue - 1) + "";
  377. var strLen = tstvalue.length;
  378. checkValue = checkValue.substr(0,4);
  379. for(var i = 0 ; i < (5 - strLen) ; i++){
  380. checkValue = checkValue + "0";
  381. }
  382. checkValue = checkValue + tstvalue + "A";
  383. model.setValue("/root/searchData/CHARGE_NO",checkValue);
  384. find();
  385. }
  386. ]]>
  387. </script>
  388. </xhtml:head>
  389. <xhtml:body guideline="1,980;2,615;2,615;">
  390. <caption id="caption6" class="cell2" style="left:0px; top:36px; width:100px; height:20px; border-color:#000000; ">预定炉次号</caption>
  391. <caption id="caption7" class="cell2" style="left:213px; top:35px; width:100px; height:20px; border-color:#000000; ">牌 号</caption>
  392. <caption id="caption8" class="cell2" style="left:426px; top:35px; width:100px; height:20px; border-color:#000000; ">连 浇 炉</caption>
  393. <caption id="caption9" class="cell2" style="left:639px; top:35px; width:100px; height:20px; border-color:#000000; ">工程路径代码</caption>
  394. <input id="input1" ref="/root/formData/PLAN_CHARGE_NO" disabled="true" style="left:102px; top:35px; width:106px; height:20px; "/>
  395. <input id="input2" ref="/root/formData/STL_GRD" disabled="true" style="left:315px; top:35px; width:106px; height:20px; "/>
  396. <input id="input3" ref="/root/formData/CAST_SEQ" disabled="true" style="left:528px; top:35px; width:106px; height:20px; "/>
  397. <input id="input4" ref="/root/formData/INSTR_TREAT_RT" disabled="true" style="left:741px; top:35px; width:165px; height:20px; border-color:#000000; "/>
  398. <datagrid id="datagridR" nodeset="/root/gridData/gridR/SmsAllProgResult_VO/SmsAllProgResult_Row" caption="处理编号^处理内容^处理时刻^操作时刻^工序号" colwidth="100, 100, 130, 100, 110" defaultrows="20" mergecellsfixedrows="bycolrec" rowsep="|" colsep="^" style="left:0px; top:60px; width:537px; height:540px; border-color:#000000; ">
  399. <col ref="TREAT_CD"/>
  400. <col ref="CD_DESC" style="text-align:left; "/>
  401. <col ref="TREAT_DTIME" format="yyyy-mm-dd hh:nn:ss" style="text-align:left; "/>
  402. <col ref="REG_DTIME" format="yyyy-mm-dd hh:nn:ss" style="text-align:left; "/>
  403. <col ref="PROC_CD"/>
  404. </datagrid>
  405. <datagrid id="datagridL" nodeset="/root/gridData/gridL/SmsProgProgResult_VO/SmsProgProgResult_Row" caption="选择^处理编号^处理内容^处理时刻^工序号" colwidth="60, 60, 93, 148, 78" defaultrows="20" rowsep="|" colsep="^" style="left:540px; top:60px; width:440px; height:540px; border-color:#000000; ">
  406. <col ref="CHK" type="checkbox" checkvalue="Y,N"/>
  407. <col ref="SM_CD"/>
  408. <col ref="SM_CFNM"/>
  409. <col ref="TREAT_DTIME" type="inputdate" format="yyyy-mm-dd hh:nn" editable="false"/>
  410. <col ref="PROC_CD" type="combo" editable="false">
  411. <choices>
  412. <itemset nodeset="/root/comboData/resData/item">
  413. <label ref="label"/>
  414. <value ref="value"/>
  415. </itemset>
  416. </choices>
  417. </col>
  418. <script type="javascript" ev:event="xforms-value-changed">
  419. <![CDATA[
  420. /*
  421. * datagridL中的行CHK值变化,则改变行的状态
  422. */
  423. chkValu_change("datagridL", datagridL.row);
  424. ]]>
  425. </script>
  426. </datagrid>
  427. <caption id="caption2" class="cell" style="left:0px; top:5px; width:100px; height:20px; border-color:#000000; ">炉 次 号</caption>
  428. <select1 id="combo1" ref="/root/searchData/CHARGE_NO" appearance="minimal" editmode="input" style="left:102px; top:5px; width:110px; height:20px; border-color:#000000; ">
  429. <choices>
  430. <itemset nodeset="/root/initData/INIT_CHARGE_NO/SECOND_INIT_RESULT_VO/SECOND_INIT_RESULT_Row">
  431. <label ref="LABEL"/>
  432. <value ref="VALUE"/>
  433. </itemset>
  434. </choices>
  435. </select1>
  436. <caption id="caption3" class="cell" style="left:262px; top:5px; width:100px; height:20px; border-color:#000000; ">工 序</caption>
  437. <select1 id="combo2" ref="/root/searchData/COMM_CD" appearance="minimal" style="left:364px; top:5px; width:110px; height:20px; border-color:#000000; ">
  438. <choices>
  439. <itemset nodeset="/root/initData/INIT_COMM_CD/FIRST_INIT_RESULT_VO/FIRST_INIT_RESULT_Row">
  440. <label ref="LABEL"/>
  441. <value ref="VALUE"/>
  442. </itemset>
  443. </choices>
  444. </select1>
  445. <line id="line1" style="x1:2px; y1:0px; x2:982px; y2:0px; "/>
  446. <line id="line3" style="x1:0px; y1:30px; x2:980px; y2:30px; "/>
  447. <button id="button3" style="left:240px; top:8px; width:20px; height:20px; background-image:../../images/cal_next_m.gif; ">
  448. <caption/>
  449. <script type="javascript" ev:event="DOMActivate">
  450. <![CDATA[
  451. rightClick();
  452. ]]>
  453. </script>
  454. </button>
  455. <button id="button4" style="left:215px; top:8px; width:20px; height:20px; background-image:../../images/cal_pre_m.gif; ">
  456. <caption/>
  457. <script type="javascript" ev:event="DOMActivate">
  458. <![CDATA[
  459. leftClick();
  460. ]]>
  461. </script>
  462. </button>
  463. </xhtml:body>
  464. </xhtml:html>