301 lines
15 KiB
JavaScript
301 lines
15 KiB
JavaScript
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: "<additional><condition> 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 + "')</condition></additional>" });
|
|
|
|
$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();
|
|
}
|
|
|
|
|
|
}
|
|
]);
|
|
});
|