VerifyApplyDetail2.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.scm.qc.VerifyApplyDetail2', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. BaseUtil: Ext.create('erp.util.BaseUtil'),
  6. GridUtil: Ext.create('erp.util.GridUtil'),
  7. views:[
  8. 'core.form.Panel','scm.qc.VerifyApplyDetail2','core.grid.Panel2','scm.qc.ProjectDetGrid','core.toolbar.Toolbar','core.form.MultiField',
  9. 'core.button.Print','core.button.ResAudit','core.button.Audit','core.button.Close','core.form.FileField',
  10. 'core.button.Delete','core.button.Update','core.button.DeleteDetail','core.button.TurnMrb',
  11. 'core.button.Load','core.button.DeleteAllDetails','core.button.Submit','core.button.ResSubmit',
  12. 'core.button.Check','core.button.ResCheck','core.button.TurnProdAbnormal','core.button.TurnT8DReport',
  13. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.grid.YnColumn'
  14. ],
  15. init:function(){
  16. var me = this;
  17. this.control({
  18. 'erpGridPanel2': {
  19. itemclick : this.onGridItemClick,
  20. afterrender: function(g) {
  21. g.plugins[0].on('beforeedit', function(args){
  22. if(g.readOnly) {
  23. return false;
  24. }
  25. var status = args.record.data.ved_statuscode, isok=args.record.data.ved_isok,
  26. isng = args.record.data.ved_isng;
  27. if(status == 'AUDITED' || status == 'TURNIN') {
  28. return false;
  29. }
  30. if (args.field == "ved_okqty") {
  31. return me.isAllowUpdateOkQty(args.record);
  32. }
  33. if (args.field == "ved_ngqty") {
  34. return me.isAllowUpdateNgQty(args.record);
  35. }
  36. if(args.field == "ved_okqty" && isok == 1) {
  37. return false;
  38. }
  39. if(args.field == "ved_ngqty" && isng == 1) {
  40. return false;
  41. }
  42. });
  43. },
  44. reconfigure: function(grid) {
  45. if (Ext.getCmp('vad_qty')) {
  46. var qty = Ext.getCmp('vad_qty').value,
  47. record = grid.store.getAt(0);
  48. if(record.get('ved_okqty') == 0 && record.get('ved_ngqty') == 0
  49. && record.get('ved_id') == 0) {
  50. record.set('ved_okqty', qty);
  51. }
  52. }
  53. }
  54. },
  55. '#erpUpdateQtyButton': {
  56. afterrender: function(btn){
  57. var status = Ext.getCmp('ve_statuscode');
  58. if(status && status.value == 'UNAUDIT'){
  59. btn.hide();
  60. }
  61. },
  62. click: function(btn){
  63. var record=btn.ownerCt.ownerCt.getSelectionModel().getLastSelected();
  64. me.updateQty(record);
  65. }
  66. },
  67. 'projectdet': {
  68. itemclick: this.onGridItemClick1
  69. },
  70. 'erpDeleteButton' : {
  71. click: function(btn){
  72. me.FormUtil.onDelete(Ext.getCmp('ve_id').value);
  73. }
  74. },
  75. 'erpUpdateButton': {
  76. click: function(btn){
  77. var grid = Ext.getCmp('grid');
  78. var qty = Ext.getCmp('vad_qty').value,
  79. record = grid.store.getAt(0);
  80. if(record.get('ved_okqty') == 0 && record.get('ved_ngqty') == 0) {
  81. record.set('ved_okqty', qty);
  82. }
  83. me.beforeUpdate();
  84. }
  85. },
  86. 'erpCloseButton': {
  87. click: function(btn){
  88. me.FormUtil.beforeClose(me);
  89. }
  90. },
  91. 'erpAuditButton': {
  92. click: function(btn){
  93. var grid = Ext.getCmp('grid');
  94. var qty = Ext.getCmp('vad_qty').value,
  95. record = grid.store.getAt(0);
  96. if(record.get('ved_okqty') == qty && record.get('ved_id') == 0) {
  97. warnMsg('还未保存!是否先保存单据?', function(b){
  98. if(b == 'ok' || b == 'yes') {
  99. me.beforeUpdate();
  100. }
  101. });
  102. } else {
  103. me.FormUtil.onAudit(Ext.getCmp('ve_id').value);
  104. }
  105. },
  106. afterrender: function(btn){
  107. var status = Ext.getCmp('ve_statuscode');
  108. if(status && status.value == 'AUDITED'){
  109. btn.hide();
  110. }
  111. }
  112. },
  113. 'erpResAuditButton': {
  114. afterrender: function(btn){
  115. var status = Ext.getCmp('ve_statuscode');
  116. if(status && status.value != 'AUDITED'){
  117. btn.hide();
  118. }
  119. },
  120. click: function(btn){
  121. me.FormUtil.onResAudit(Ext.getCmp('ve_id').value);
  122. }
  123. },
  124. 'erpPrintButton': {
  125. click: function(btn){
  126. var condition = '{QUA_VerifyApplyDetail.ve_id}=' + Ext.getCmp('ve_id').value + '';
  127. var id = Ext.getCmp('ve_id').value;
  128. reportName="verifyMake";
  129. me.FormUtil.onwindowsPrint(id, reportName, condition);
  130. }
  131. },
  132. 'erpTurnMrbButton':{
  133. afterrender: function(btn){
  134. var status = Ext.getCmp('ve_statuscode');
  135. if(status && status.value != 'AUDITED'){
  136. btn.hide();
  137. }
  138. },
  139. click: function(btn){
  140. warnMsg("确定要转Mrb单吗?", function(btn){
  141. if(btn == 'yes'){
  142. var ve_id = Ext.getCmp('ve_id').value;
  143. Ext.Ajax.request({//拿到grid的columns
  144. url : basePath + "scm/qc/turnMrb.action",
  145. params: {
  146. id:ve_id,
  147. code:Ext.getCmp('ve_code').value
  148. },
  149. method : 'post',
  150. async: false,
  151. callback : function(options,success,response){
  152. var localJson = new Ext.decode(response.responseText);
  153. if(localJson.exceptionInfo){
  154. showError(localJson.exceptionInfo);
  155. }
  156. if(localJson.success){
  157. alert("转Mrb单成功!");
  158. }
  159. }
  160. });
  161. }
  162. });
  163. }
  164. },
  165. 'erpTurnProdAbnormalButton':{
  166. afterrender: function(btn){
  167. var status = Ext.getCmp('ve_statuscode');
  168. if(status && status.value != 'AUDITED'){
  169. btn.hide();
  170. }
  171. },
  172. click: function(btn){
  173. warnMsg("确定要转物料品质异常联络单吗?", function(btn){
  174. if(btn == 'yes'){
  175. var ve_id = Ext.getCmp('ve_id').value;
  176. Ext.Ajax.request({//拿到grid的columns
  177. url : basePath + "scm/qc/turnProdAbnormal.action",
  178. params: {
  179. id: ve_id,
  180. caller: caller
  181. },
  182. method : 'post',
  183. async: false,
  184. callback : function(options,success,response){
  185. var localJson = new Ext.decode(response.responseText);
  186. if(localJson.exceptionInfo){
  187. showError(localJson.exceptionInfo);
  188. }
  189. if(localJson.success){
  190. //alert("转物料品质异常联络单成功!");
  191. turnSuccess(function(){
  192. var id = localJson.id;
  193. var url = "jsps/scm/qc/prodAbnormal.jsp?formCondition=pa_id=" + id;
  194. me.FormUtil.onAdd('ProdAbnormal' + id, '物料品质异常联络单' + id, url);
  195. });
  196. }
  197. }
  198. });
  199. }
  200. });
  201. }
  202. },
  203. 'erpTurnT8DReportButton':{
  204. afterrender: function(btn){
  205. var status = Ext.getCmp('ve_statuscode');
  206. if(status && status.value != 'AUDITED'){
  207. btn.hide();
  208. }
  209. },
  210. click: function(btn){
  211. warnMsg("确定要转8D报告吗?", function(btn){
  212. if(btn == 'yes'){
  213. var ve_id = Ext.getCmp('ve_id').value;
  214. Ext.Ajax.request({//拿到grid的columns
  215. url : basePath + "scm/qc/turnT8DReport.action",
  216. params: {
  217. id: ve_id,
  218. caller: caller
  219. },
  220. method : 'post',
  221. async: false,
  222. callback : function(options,success,response){
  223. var localJson = new Ext.decode(response.responseText);
  224. if(localJson.exceptionInfo){
  225. showError(localJson.exceptionInfo);
  226. }
  227. if(localJson.success){
  228. //alert("转8D报告成功!");
  229. turnSuccess(function(){
  230. var id = localJson.id;
  231. var url = "jsps/scm/qc/t8dreport.jsp?formCondition=re_id=" + id;
  232. me.FormUtil.onAdd('T8DReport' + id, '8D报告' + id, url);
  233. });
  234. }
  235. }
  236. });
  237. }
  238. });
  239. }
  240. },
  241. 'erpLoadButton':{
  242. afterrender: function(btn){
  243. var status = Ext.getCmp('ve_statuscode');
  244. if(status && status.value != 'UNAUDIT'){
  245. btn.hide();
  246. }
  247. },
  248. click: function(btn){
  249. var veid = Ext.getCmp('ve_id').value;
  250. var prid = Ext.getCmp('ve_prid').value;
  251. if(prid == 0 || prid == null){
  252. Ext.Msg.alert('请先填写检验方案ID!');
  253. }
  254. warnMsg("确认载入检验项目?", function(btn){
  255. if(btn == 'yes'){
  256. var params = new Object();
  257. var form = Ext.getCmp('form');
  258. var grid = Ext.getCmp('projectdetGrid');
  259. var items = grid.store.data.items;
  260. var array = new Array();
  261. var r = form.getValues();
  262. Ext.each(items,function(item,index){
  263. if(item.data['vd_item']!=null&&item.data['vd_item']!=""){
  264. array.push(item);
  265. }
  266. });
  267. var prid = Ext.getCmp('ve_prid').value;
  268. if(!prid||(prid&&(prid == 0||prid==''||prid==null))){
  269. Ext.Msg.alert('请先填写检验方案ID!');
  270. }else{
  271. if(array.length>0){
  272. Ext.Msg.alert('需要先清除明细行中的数据!');
  273. } else {
  274. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  275. //抓取
  276. Ext.Ajax.request({
  277. url : basePath + "scm/qc/catchProject.action",
  278. params : {
  279. id: veid,
  280. prid: prid
  281. },
  282. method : 'post',
  283. callback : function(options,success,response){
  284. me.FormUtil.getActiveTab().setLoading(false);
  285. var localJson = new Ext.decode(response.responseText);
  286. if(localJson.success){
  287. catchSuccess(function(){
  288. //add成功后刷新页面进入可编辑的页面
  289. var value = r[form.keyField];
  290. var condition = 'vd_veid='+value;
  291. grid.getMyData(condition);
  292. });
  293. } else if(localJson.exceptionInfo){
  294. } else{
  295. catchFailure();//@i18n/i18n.js
  296. }
  297. window.location.reload();
  298. }
  299. });
  300. }
  301. }
  302. }
  303. });
  304. }
  305. },
  306. 'erpSubmitButton': {
  307. afterrender: function(btn){
  308. var status = Ext.getCmp('ve_statuscode');
  309. if(status && status.value != 'AUDITED'){
  310. btn.hide();
  311. }
  312. status = Ext.getCmp('ve_checkstatuscode');
  313. if(status && status.value != 'UNAPPROVED'){
  314. btn.hide();
  315. }
  316. },
  317. click: function(btn){
  318. me.FormUtil.onSubmit(Ext.getCmp('ve_id').value);
  319. }
  320. },
  321. 'erpResSubmitButton': {
  322. afterrender: function(btn){
  323. var status = Ext.getCmp('ve_checkstatuscode');
  324. if(status && status.value != 'COMMITED'){
  325. btn.hide();
  326. }
  327. },
  328. click: function(btn){
  329. me.FormUtil.onResSubmit(Ext.getCmp('ve_id').value);
  330. }
  331. },
  332. 'erpCheckButton': {
  333. afterrender: function(btn){
  334. var status = Ext.getCmp('ve_checkstatuscode');
  335. if(status && status.value != 'COMMITED'){
  336. btn.hide();
  337. }
  338. },
  339. click: function(btn){
  340. me.FormUtil.onCheck(Ext.getCmp('ve_id').value);
  341. }
  342. },
  343. 'erpResCheckButton': {
  344. afterrender: function(btn){
  345. var status = Ext.getCmp('ve_checkstatuscode');
  346. if(status && status.value != 'APPROVE' ){
  347. btn.hide();
  348. }
  349. },
  350. click: function(btn){
  351. me.FormUtil.onResCheck(Ext.getCmp('ve_id').value);
  352. }
  353. },
  354. 'erpDeleteAllDetailsButton':{
  355. afterrender: function(btn){
  356. var status = Ext.getCmp('ve_statuscode');
  357. if(status && status.value != 'UNAUDIT'){
  358. btn.hide();
  359. }
  360. },
  361. click: function(btn){
  362. var grid = Ext.getCmp('projectdetGrid');
  363. warnMsg('确定清除所有明细行么?',function(t){
  364. if(t=='yes'){
  365. var veid = Ext.getCmp('ve_id').value;
  366. var form = Ext.getCmp('form');
  367. var r = form.getValues();
  368. var params = new Object();
  369. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  370. Ext.Ajax.request({
  371. url : basePath + "scm/qc/cleanProject.action",
  372. params : {
  373. id: veid
  374. },
  375. method : 'post',
  376. callback : function(options,success,response){
  377. me.FormUtil.getActiveTab().setLoading(false);
  378. var localJson = new Ext.decode(response.responseText);
  379. if(localJson.success){
  380. catchSuccess(function(){
  381. //add成功后刷新页面进入可编辑的页面
  382. var value = r[form.keyField];
  383. var condition = 'vd_veid='+value;
  384. grid.getMyData(condition);
  385. });
  386. } else if(localJson.exceptionInfo){
  387. } else{
  388. catchFailure();//@i18n/i18n.js
  389. }
  390. }
  391. });
  392. }else{
  393. return;
  394. }
  395. });
  396. }
  397. }
  398. });
  399. },
  400. onGridItemClick: function(selModel, record){//grid行选择
  401. this.GridUtil.onGridItemClick(selModel, record);
  402. var grid = selModel.ownerCt,
  403. btn = grid.down('erpDeleteDetailButton');
  404. if(btn && record.get('ved_statuscode') == 'TURNIN'){
  405. btn.setDisabled(true);
  406. }
  407. btn = Ext.getCmp('erpUpdateQtyButton');
  408. if(btn && record.data.ved_statuscode != 'TURNIN'){
  409. btn && btn.setDisabled(false);
  410. }
  411. },
  412. onGridItemClick1: function(selModel, record){//grid行选择
  413. this.gridLastSelected = record;
  414. var grid = Ext.getCmp('projectdetGrid');
  415. grid.lastSelectedRecord = record;
  416. if(record.data[grid.necessaryField] == null || record.data[grid.necessaryField] == ''){
  417. this.gridLastSelected.findable = true;//空数据可以在输入完code,并移开光标后,自动调出该条数据
  418. } else {
  419. this.gridLastSelected.findable = false;
  420. }
  421. this.GridUtil.onGridItemClick(selModel, record);
  422. },
  423. getForm: function(btn){
  424. return btn.ownerCt.ownerCt;
  425. },
  426. beforeUpdate: function(){
  427. var mm = this;
  428. if(! mm.FormUtil.checkForm()){
  429. return;
  430. }
  431. var s1 = mm.FormUtil.checkFormDirty(form);
  432. var grid2 = Ext.getCmp('projectdetGrid');
  433. var grid = Ext.getCmp('grid'), items = grid.store.data.items, qty = Ext.getCmp('vad_qty').value,
  434. testman = Ext.getCmp('ve_testman').value;
  435. var bool = true;
  436. //合格数量不能大于送检数量
  437. Ext.each(items, function(item){
  438. if(item.dirty){
  439. item.set('ved_samplingngqtylv', item.data['ved_samplingngqty']*100/item.data['ved_samplingqty']);
  440. }
  441. });
  442. Ext.each(items, function(item){
  443. if(item.dirty){
  444. if(item.data['ved_statuscode'] == "AUDITED"){
  445. bool = false;
  446. showError('明细表第' + item.data['ved_detno'] + '行已审核,不能修改!');return;
  447. }
  448. if(item.data['ved_okqty'] + item.data['ved_ngqty'] > qty){
  449. bool = false;
  450. showError('明细表第' + item.data['ved_detno'] + '行的合格数量与不合格数量之和不能大于送检数量!');return;
  451. } else {
  452. item.set('ved_checkqty', item.data['ved_okqty'] + item.data['ved_ngqty']);
  453. }
  454. item.set('ved_samplingqty', item.data['ved_samplingokqty'] + item.data['ved_samplingngqty']);
  455. }
  456. });
  457. var sum = grid.store.getSum(items, 'ved_checkqty');
  458. if(sum > qty) {
  459. showError('送检数量之和不能大于收料数量!');return;
  460. }
  461. var param1 = mm.GridUtil.getGridStore(grid);
  462. var param2 = mm.GridUtil.getGridStore(grid2);
  463. //更新
  464. if(bool){
  465. if(s1 == '' && (param1 == null || param1 == '') && (param2 == null || param2 == '')){
  466. warnMsg('未添加或修改数据,是否继续?', function(btn){
  467. if(btn == 'yes'){
  468. mm.onUpdate(param1, param2);
  469. } else {
  470. return;
  471. }
  472. });
  473. } else {
  474. mm.onUpdate(param1, param2);
  475. }
  476. }
  477. },
  478. onUpdate:function(param1,param2){
  479. var me = this;
  480. var form = Ext.getCmp('form');
  481. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  482. param2 = param2 == null ? [] : "[" + param2.toString().replace(/\\/g,"%") + "]";
  483. if(form.getForm().isValid()){
  484. //form里面数据
  485. Ext.each(form.items.items, function(item){
  486. if(item.xtype == 'numberfield'){
  487. //number类型赋默认值,不然sql无法执行
  488. if(item.value == null || item.value == ''){
  489. item.setValue(0);
  490. }
  491. }
  492. });
  493. var r = form.getValues();
  494. //去除ignore字段
  495. var keys = Ext.Object.getKeys(r), f;
  496. Ext.each(keys, function(k){
  497. f = form.down('#' + k);
  498. if(f && f.logic == 'ignore') {
  499. delete r[k];
  500. }
  501. });
  502. if(!me.FormUtil.contains(form.updateUrl, '?caller=', true)){
  503. form.updateUrl = form.updateUrl + "?caller=" + caller;
  504. }
  505. me.FormUtil.update(r, param1, param2);
  506. }else{
  507. me.FormUtil.checkForm();
  508. }
  509. },
  510. isAllowUpdateOkQty: function(record) {
  511. var bool = true;
  512. if (caller == 'VerifyApplyDetail!FQC') {
  513. if (record.get('ved_ngqty') != null && record.get('ved_ngqty') > 0) bool = false;
  514. }
  515. return bool;
  516. },
  517. isAllowUpdateNgQty: function(record) {
  518. var bool = true;
  519. if (caller == 'VerifyApplyDetail!FQC') {
  520. if (record.get('ved_okqty') != null && record.get('ved_okqty') > 0) bool = false;
  521. }
  522. return bool;
  523. },
  524. updateQty:function(record){
  525. var win = this.updateQtywindow;
  526. if (!win) {
  527. this.updateQtywindow = win = this.getUpdateQtyWindow(record);
  528. }
  529. win.show();
  530. },
  531. getComboData: function(table, field, callback) {
  532. var me = this;
  533. Ext.Ajax.request({
  534. url : basePath + 'common/getFieldsDatas.action',
  535. params: {
  536. caller: 'DataListCombo',
  537. fields: 'dlc_value,dlc_display',
  538. condition: 'dlc_caller=\'' + table + '\' AND dlc_fieldname=\'' + field + '\''
  539. },
  540. method : 'post',
  541. callback : function(options,success,response){
  542. var localJson = new Ext.decode(response.responseText);
  543. if(localJson.exceptionInfo){
  544. showError(localJson.exceptionInfo);return;
  545. }
  546. if(localJson.success){
  547. var data = Ext.decode(localJson.data), arr = new Array();
  548. for(var i in data) {
  549. arr.push({
  550. display: data[i].DLC_VALUE,
  551. value: data[i].DLC_DISPLAY
  552. });
  553. }
  554. callback.call(me, arr);
  555. }
  556. }
  557. });
  558. },
  559. getUpdateQtyWindow : function(record) {
  560. var me = this;
  561. var win = Ext.create('Ext.window.Window',{
  562. width: 330,
  563. height: 300,
  564. closeAction: 'hide',
  565. cls: 'custom-blue',
  566. title:'<h1>更改数量</h1>',
  567. layout: {
  568. type: 'vbox'
  569. },
  570. items:[{
  571. margin: '5 0 0 5',
  572. xtype:'numberfield',
  573. hideTrigger: true,
  574. fieldLabel:'合格数量',
  575. value: record.data.ved_okqty,
  576. name:'ved_okqty',
  577. id:'ved_okqty'
  578. },{
  579. margin: '5 0 0 5',
  580. xtype:'numberfield',
  581. hideTrigger: true,
  582. fieldLabel:'不合格数量',
  583. value: record.data.ved_ngqty,
  584. name:'ved_ngqty',
  585. id:'ved_ngqty',
  586. },{
  587. margin: '5 0 0 5',
  588. xtype:'combo',
  589. fieldLabel:'不良原因码',
  590. value: record.data.ved_nrcode,
  591. name:'ved_nrcode',
  592. id:'ved_nrcode',
  593. displayField: 'display',
  594. valueField: 'value',
  595. queryMode: 'local',
  596. store : new Ext.data.Store({
  597. fields: ['display', 'value'],
  598. data: []
  599. })
  600. },{
  601. margin: '5 0 0 5',
  602. xtype:'combo',
  603. fieldLabel:'不良处理',
  604. value: record.data.ved_ngdeal,
  605. name:'ved_ngdeal',
  606. id:'ved_ngdeal',
  607. displayField: 'display',
  608. valueField: 'value',
  609. queryMode: 'local',
  610. store : new Ext.data.Store({
  611. fields: ['display', 'value'],
  612. data: []
  613. })
  614. },{
  615. margin: '5 0 0 5',
  616. xtype:'textfield',
  617. fieldLabel:'不合格描述',
  618. value: record.data.ved_remark,
  619. name:'ved_remark',
  620. id:'ved_remark'
  621. }],
  622. buttonAlign:'center',
  623. buttons:[{
  624. xtype:'button',
  625. text:'保存',
  626. width:60,
  627. iconCls: 'x-button-icon-save',
  628. handler:function(btn){
  629. var w = btn.up('window');
  630. me.saveQty(w);
  631. w.hide();
  632. }
  633. },{
  634. xtype:'button',
  635. columnWidth:0.1,
  636. text:'关闭',
  637. width:60,
  638. iconCls: 'x-button-icon-close',
  639. margin:'0 0 0 10',
  640. handler:function(btn){
  641. btn.up('window').hide();
  642. }
  643. }]
  644. });
  645. me.getComboData(caller, 'ved_nrcode', function(data){
  646. win.down('#ved_nrcode').store.loadData(data);
  647. });
  648. me.getComboData(caller, 'ved_ngdeal', function(data){
  649. win.down('#ved_ngdeal').store.loadData(data);
  650. });
  651. return win;
  652. },
  653. saveQty: function(w) {
  654. var ved_okqty = w.down('field[name=ved_okqty]').getValue(),
  655. ved_ngqty = w.down('field[name=ved_ngqty]').getValue(),
  656. ved_nrcode = w.down('#ved_nrcode').getValue(),
  657. ved_ngdeal = w.down('#ved_ngdeal').getValue(),
  658. qty = Ext.getCmp('vad_qty').value,
  659. ved_remark = w.down('#ved_remark').getValue(),
  660. okqty = ved_okqty ? ved_okqty : 0,
  661. ngqty = ved_ngqty ? ved_ngqty : 0,
  662. grid = Ext.getCmp('grid'),
  663. record = grid.getSelectionModel().getLastSelected();
  664. if(okqty+ngqty-qty>0){
  665. showError('合格数量与不合格数量之和不能大于送检数量!');
  666. return;
  667. }
  668. var dd = {
  669. ved_id : record.data.ved_id,
  670. ved_veid : record.data.ved_veid,
  671. ved_okqty : okqty,
  672. ved_ngqty : ngqty,
  673. ved_nrcode : ved_nrcode,
  674. ved_ngdeal : ved_ngdeal,
  675. ved_remark : ved_remark,
  676. caller: caller
  677. };
  678. Ext.Ajax.request({
  679. url : basePath +'scm/qc/updateQty.action',
  680. params : {
  681. _noc: 1,
  682. data: unescape(Ext.JSON.encode(dd))
  683. },
  684. method : 'post',
  685. callback : function(opt, s, res){
  686. var r = new Ext.decode(res.responseText);
  687. if(r.success){
  688. grid.GridUtil.loadNewStore(grid, {
  689. caller: caller,
  690. condition: 'ved_veid=' + record.data.ved_veid
  691. });
  692. showMessage('提示', '更新成功!', 1000);
  693. } else if(r.exceptionInfo){
  694. showError(r.exceptionInfo);
  695. } else{
  696. saveFailure();
  697. }
  698. }
  699. });
  700. }
  701. });