define(["angularAMD"], function (angularAMD) { angularAMD.service('mrs06Service', ["$rootScope", "$filter", "$stateParams", "config", "DashboardService", "MMWService", '$mdDialog', '$timeout', function ($rootScope, $filter, $stateParams, config, $DashboardService, $MMWService, $mdDialog, $timeout) { this.init = function (options) { function openDialog() { $mdDialog.dialog('module/moduleWIP/program/mrs-eqp/mrs06/mrs06.html', function (dialog) { var intCheckInConfirmState = null; var intPMWoReleased = null; var dtReason = []; //品質原因(設備) var equipmentState = null; //當前設備的狀態 var dtPMWoBasis = []; //保養工單 var selectEQStateName = null; var dtViolateState = []; //互斥狀態 dialog.dtEQPStateBasis = []; //設備狀態基本 dialog.selectEQState = null; //選擇的狀態 dialog.reasonKeyIn = null; //原因輸入框 dialog.desc = null; //描述輸入框 dialog.dtInputReason = []; function LoadBasis(callback) { var uri = []; var content = []; uri.push('kcEQP.clsEQPBasis.ShowEQPStateBasis'); content.push({}); uri.push('kcQC.clsQCBasis.ShowReasonBasis'); content.push({ ReasonType: 6, IssueState: 2 }); uri.push('kcEMS.clsEMSEquipment.LoadEquipmentState'); content.push({ EquipmentNo: $rootScope.bindingEQP }); uri.push('kcEQP.clsEQPStateControl.ShowStateControlType'); content.push({ ControlType: 'WIP Tracking', ControlNo: 'CheckInConfirm' }); uri.push('kcEQP.clsEQPStateControl.ShowStateControlType'); content.push({ ControlType: 'PM Work Order', ControlNo: 'PMWoReleased' }); uri.push('kcEMS.clsEMSEquipment.ShowViolateStateChange'); content.push({}); $MMWService.sendToMESSrv_Multi({ uri: uri, content: content, success: function (data) { LoadBasis_Transf(data, uri); if (callback) callback(); } }); } function LoadBasis_Transf(data, uri) { var tmpJson = JSON.parse(data.ResultJson); var tmp; var index = 0; //kcEQP.clsEQPBasis.LoadEQPStateBasis tmp = JSON.parse(tmpJson[uri[index]]); tmp = tmp[Object.keys(tmp)[0]]; dialog.dtEQPStateBasis = tmp; index++ //kcQC.clsQCBasis.ShowReasonBasis tmp = JSON.parse(tmpJson[uri[index]]); tmp = tmp[Object.keys(tmp)[0]]; dtReason = tmp; index++ //kcEMS.clsEMSEquipment.LoadEquipmentState tmp = JSON.parse(tmpJson[uri[index]]); tmp = tmp[Object.keys(tmp)[0]]; if (tmp.length > 0) { equipmentState = tmp[0].EQUIPMENTSTATE; } index++ //kcEQP.clsEQPStateControl.ShowStateControlType tmp = JSON.parse(tmpJson[uri[index]]); tmp = tmp[Object.keys(tmp)[0]]; if (tmp.length > 0) intCheckInConfirmState = tmp[0].EQUIPMENTSTATE index++ //kcEQP.clsEQPStateControl.ShowStateControlType tmp = JSON.parse(tmpJson[uri[index] + '(2)']); tmp = tmp[Object.keys(tmp)[0]]; if (tmp.length > 0) intPMWoReleased = tmp[0].EQUIPMENTSTATE index++ //kcEMS.clsEMSEquipment.ShowViolateStateChange tmp = JSON.parse(tmpJson[uri[index]]); tmp = tmp[Object.keys(tmp)[0]]; dtViolateState = tmp; index++ } dialog.InputReason = function (reasonNo, event) { if (event != undefined && event.keyCode != 13) return; var tmp = dtReason.filter(item => item.REASONNO == reasonNo); var tmp2 = dialog.dtInputReason.filter(item => item.REASONNO == reasonNo); if (tmp.length <= 0) { $rootScope.showMessage('[%REASONNO%]:' + reasonNo, '0000-230004'); } else if (tmp2.length > 0) { $rootScope.showMessage('[%REASONNO%]:' + reasonNo, '0000-202108'); } else { dialog.dtInputReason.push($rootScope.deepCopy(tmp[0])); } dialog.reasonKeyIn = ''; } dialog.dtInputReason_delete = function (index, item) { dialog.dtInputReason.splice(index, 1); } function ShowPMWoBasis(callback) { var uri = []; var content = []; uri.push('kcPM.clsPMBasis.ShowPMWoBasis'); content.push({ AdditionalXML: " WONo In (Select Distinct A.WONo From tblPMWOBasis A,tblPMWODetail B Where A.WONo=B.WONo And A.Issuestate=2 And B.WOStatus=2 And B.EQUIPMENTNO='" + $rootScope.bindingEQP + "')" }); $MMWService.sendToMESSrv_Multi({ uri: uri, content: content, success: function (data) { ShowPMWoBasis_Transf(data, uri); if (callback) callback(); } }); } function ShowPMWoBasis_Transf(data, uri) { var tmpJson = JSON.parse(data.ResultJson); var tmp; var index = 0; //kcPM.clsPMBasis.ShowPMWoBasis tmp = JSON.parse(tmpJson[uri[index]]); tmp = tmp[Object.keys(tmp)[0]]; dtPMWoBasis = tmp; index++ } function EditEquipmentState(callback) { var uri = []; var content = []; uri.push('kcEMS.clsEMSEquipment.EditEquipmentState'); content.push({ UserNo: config.cache.account, EquipmentNo: $rootScope.bindingEQP, EquipmentState: dialog.selectEQState, Description: dialog.desc, dtEMSReasons: dialog.dtInputReason }); $MMWService.sendToMESSrv_Multi({ uri: uri, content: content, success: function (data) { if (callback) callback(); } }); } function funDisableViolateStateButton() { dialog.dtEQPStateBasis.forEach(item => { var tmp = dtViolateState.filter(function (item2) { return item2.EQUIPMENTSTATE == equipmentState && item2.VIOLATIVESTATE == item.EQUIPMENTSTATE; }); if (tmp.length > 0) item.Hidden = true; else item.Hidden = false; if (item.EQUIPMENTSTATE == equipmentState) item.Hidden = true; }); } //// LoadBasis(function () { funDisableViolateStateButton(); }); return { background: { click: function () { dialog.hide(); if (typeof (feedback) == 'function') feedback(); } }, back: function () { dialog.hide(); if (options.close) options.close(); }, confirm: function () { if ($rootScope.IsNullOrEmpty(dialog.desc)) { $rootScope.showMessage('[%GETSELREASONNO%] [%CANNOTBEEMPTY%]', '0000-200005'); return; } if (dialog.dtInputReason.length <= 0) { $rootScope.showMessage('[%REASONNO%] [%UNSELREASONNO%]', '0000-200001'); return; } if (dialog.selectEQState == null) { $rootScope.showMessage('[%LASTSTATUS%] [%UNSELREASONNO%]', '0000-200005'); return; } if (intPMWoReleased != dialog.selectEQState) { dtPMWoBasis = []; ShowPMWoBasis(function () { if (dtPMWoBasis.length > 0) { $rootScope.showMessage("[%EquipmentNo%]: " & $rootScope.bindingEQP & " [%PMWo does not finish yet not allow to change equipment state%]", "0000-200015"); return; } EditEquipmentState(function (data) { var result = { eqState: dialog.selectEQState, eqName: selectEQStateName }; if (options.callBack) options.callBack(result); dialog.hide(); }); }) } else { EditEquipmentState(function (data) { var result = { eqState: dialog.selectEQState, eqName: selectEQStateName }; if (options.callBack) options.callBack(result); dialog.hide(); }); } }, selectStatus: function (item) { dialog.selectEQState = item.EQUIPMENTSTATE; selectEQStateName = item.STATENAME; }, GetEQPStateColor: function (item) { var style = {}; ////無法決定如何顯示 設備狀態顏色,先註解效果 //style['border-color'] = $rootScope.ArgbInt2HexStr(item.STATECOLOR); //style['border-width'] = '1px'; //style['border-style'] = 'solid'; return style; }, scanQrcode: function (type) { $rootScope.OpenScanner({ after: function (result) { if (!$rootScope.IsNullOrEmpty(result)) { dialog.InputReason(result); } }, exception: function () { //目前裝置無法使用相機 $rootScope.showAlert($filter('translate')('common.msg.camera_not_support')); }, orientation: "landscape" }); } } } ); } openDialog(); } } ]); });