fleet-contractor/Site/Maintenance/js/scheduleassets.js
2023-04-28 12:22:26 +08:00

514 lines
18 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

if (typeof manageassetsCtrl !== 'function') {
$manageassetsCtrl = function manageassetsCtrl() {
this.tmpobj = {
};
this.wizardCtrl = null;
this.vue = null;
};
(function () {
'use strict';
var dataGrid = window.DataGrid || window['g5-datagrid'];
$manageassetsCtrl.prototype.getData = function (/*dataObj, tmpdata*/) {
return this.vue.source;
};
$manageassetsCtrl.prototype.setData = function (assetData) {
if (assetData) {
for (var i = 0; i < assetData.length; i++) {
var a = assetData[i];
a.Selected = false;
if (a.Highlight == undefined)
a.Highlight = false;
}
}
this.vue.source = assetData ? assetData : [];
this.vue.$refs.grid.resize();
};
$manageassetsCtrl.prototype.reload = function () {
this.vue.$refs.grid.reload()
};
$manageassetsCtrl.prototype.Init = function (parent, newselected) {
var ethis = this;
//加载子页面模版
parent.load('../template/ManageAssetsCtrl.html?v=8', function () {
ethis.vue = new Vue({
el: parent.find('.ManageAssetsCtrl')[0],
components: {
'data-grid': dataGrid
},
data: {
wnd: window.parent,
editable: true,
columns: [],
source: []
},
computed: {
},
watch: {
source: function (val) {
}
},
methods: {
cellvaluechanged: function (item, key) {
},
rowdblclick: function (e) {
}
}
});
ethis.vue.columns = createGridColumn(newselected);
});
};
function createGridColumn(newselected) {
var editable = false;
var columns = [
{
key: 'Selected',
caption: '',
type: dataGrid.COLUMN_TYPE.checkbox,
width: 30,
align: 'center',
sortable: false,
orderable: false,
enabled: true,
resizable: false,
allcheck: false,
visible: !newselected
},
{
key: 'VIN',
caption: GetTextByKey("P_PM_SN", 'SN'),
type: dataGrid.COLUMN_TYPE.lable,
width: 140,
orderable: false,
resizable: true,
enabled: editable,
styleFilter: function (item) {
if (item.Highlight)
return { 'background-color': 'yellow' };
}
},
{
key: 'Name',
caption: GetTextByKey("P_PM_NAME", 'Name'),
type: dataGrid.COLUMN_TYPE.lable,
width: 140,
orderable: false,
resizable: true,
enabled: editable,
styleFilter: function (item) {
if (item.Highlight)
return { 'background-color': 'yellow' };
}
},
{
key: 'MakeName',
caption: GetTextByKey("P_PM_MAKE", 'Make'),
type: dataGrid.COLUMN_TYPE.lable,
width: 100,
orderable: false,
enabled: editable,
resizable: true,
visible: !newselected,
styleFilter: function (item) {
if (item.Highlight)
return { 'background-color': 'yellow' };
}
},
{
key: 'ModelName',
caption: GetTextByKey("P_PM_MODEL", 'Model'),
type: dataGrid.COLUMN_TYPE.lable,
width: 100,
orderable: false,
resizable: true,
enabled: editable,
visible: !newselected,
styleFilter: function (item) {
if (item.Highlight)
return { 'background-color': 'yellow' };
}
},
{
key: 'EngineHours',
caption: GetTextByKey("P_PM_CURRENTHOURS", 'Current Hours'),
type: dataGrid.COLUMN_TYPE.lable,
width: 100,
orderable: false,
resizable: true,
visible: (scheduletype === "HM" || scheduletype === "PM")
},
{
key: 'StartHours',
caption: GetTextByKey("P_PM_STARTINGHOURS", 'Starting Hours'),
type: dataGrid.COLUMN_TYPE.input,
width: 100,
orderable: false,
resizable: false,
enabled: 'Enabled',
visible: (scheduletype === "HM" || scheduletype === "PM")
},
{
key: 'Odometer',
caption: GetTextByKey("P_PM_CURRENTODOMETER", 'Current Odometer'),
type: dataGrid.COLUMN_TYPE.lable,
width: 120,
orderable: false,
resizable: true,
visible: (scheduletype === "RDM" || scheduletype === "ADM")
},
{
key: 'StartOdometer',
caption: GetTextByKey("P_PM_STARTODOMETER", 'Start Odometer'),
type: dataGrid.COLUMN_TYPE.input,
width: 100,
orderable: false,
resizable: false,
enabled: 'Enabled',
visible: (scheduletype === "RDM" || scheduletype === "ADM")
},
{
key: 'StartDateString',
caption: GetTextByKey("P_PM_PLANSTARTDATE", 'Plan Start Date'),
type: dataGrid.COLUMN_TYPE.datepicker,
width: 100,
orderable: false,
resizable: false,
enabled: 'Enabled',
visible: scheduletype === "TBM"
},
{
key: 'StartIntervalValue',
caption: GetTextByKey("P_PM_STARTINTERVAL", 'Start Interval'),
type: dataGrid.COLUMN_TYPE.dropdown,
source: 'TempIntervals',
width: 100,
orderable: false,
resizable: false,
enabled: 'Enabled',
visible: (scheduletype === "HM" || scheduletype === "RDM" || scheduletype === "TBM")
}
];
return columns;
}
}());
}
function getIntervalValues(currentValue) {
var result = [];//取当前值的前两个和后10个Interval
if (allintervals && allintervals.length > 0) {
var maxInterval = allintervals[allintervals.length - 1];
var pervoid = parseInt(currentValue / maxInterval);
var remain = currentValue % maxInterval;
if (remain > 0)
pervoid++;
var maxpervoid = pervoid + 1;
var minpervoid = pervoid - parseInt(10 / allintervals.length) - 1;//10表示向后取10
if (minpervoid < 0)
minpervoid = 0;
for (var pi = maxpervoid; pi >= minpervoid; pi--) {
for (var i = allintervals.length - 1; i >= 0; i--) {
var interval = allintervals[i];
var tempinterval = pi * maxInterval + interval;
result.push(tempinterval);
if (tempinterval >= currentValue) {
if (result.length > 2)
result.splice(0, 1);
}
else if (result.length == 12)
break;
}
}
}
return result;
}
/******************************Assets********************************/
function getMachineTypes() {
pmquery('GetMachineTypes', '', function (data) {
var types = [];
types.push($('<option value="-1">' + GetTextByKey("P_SELECT_ALL","All") + '</option>'));
if (data && data.length > 0) {
for (var i = 0; i < data.length; i++) {
types.push($('<option></option>').val(data[i].ID).text(data[i].Name));
}
}
types[0].prop('selected', true);
$('#sel_machine_type').empty().append(types);
GetSelectedMachines();
});
}
function GetSelectedMachines() {
_ScheduleAssets = [];
pmquery('GetSelectedMachines', iid, function (data) {
if (typeof data === "string") {
showAlert(data, GetTextByKey("P_PM_ASSETASSIGNMENT", 'Asset Assignment'));
return;
}
_ScheduleAssets = data;
for (var i = 0; i < _SelectedUnSavedMachines.length; i++) {
_ScheduleAssets.push(_SelectedUnSavedMachines[i]);
}
getMatchSelectedMachines();
});
}
function getMatchSelectedMachines() {
var typeid = $('#sel_machine_type').val();
var machinefilter = $('#txt_machine_key').val().toLowerCase();
var showallassigned = $('#chk_showallassignedassets').prop('checked');
_showSelectedMachines = [];
var unMatched = [];
for (var i = 0; i < _ScheduleAssets.length; i++) {
var m = _ScheduleAssets[i];
m.Enabled = !m.AlertsCount || m.AlertsCount == 0;
m.Highlight = false;
if (((typeid == -1 || typeid == m.TypeID)
&& (machinefilter == "" || m.VIN.toLowerCase().indexOf(machinefilter) >= 0
|| m.Name.toLowerCase().indexOf(machinefilter) >= 0))) {
m.Highlight = showallassigned && (machinefilter !== "" || typeid != -1);
if (scheduletype == "HM" || scheduletype == "RDM") {
var value = 0;
if (scheduletype == "HM")
value = m.StartHours;
else
value = m.StartOdometer;
m.TempIntervals = getIntervalValues(value);
m.TempIntervals.splice(0, 0, "");
}
else {
m.TempIntervals = [];
m.TempIntervals.push("");
if (allintervals) {
for (var j = 0; j < allintervals.length; j++)
m.TempIntervals.push(allintervals[j]);
}
}
_showSelectedMachines.push(m);//Show All时满足是啥条件的放在前面并高亮显示
}
else if (showallassigned)
unMatched.push(m);
}
if (showallassigned) {
for (var i in unMatched)
_showSelectedMachines.push(unMatched[i]);
}
if (assignedassetCtrl) {
assignedassetCtrl.setData(_showSelectedMachines);
//assignedassetCtrl.reload();
}
}
function OnSaveMachines() {
var assets = [];
for (var i = 0; i < _ScheduleAssets.length; i++) {
var machine = _ScheduleAssets[i];
var asset = {};
asset.AssetId = machine.AssetId;
asset.StartIntervalValue = machine.StartIntervalValue;
switch (scheduletype) {
case "TBM":
asset.StartDate = machine.StartDateString;
if (asset.StartDate == "")
asset.StartDate = "1900-01-01";
break;
case "PM":
case "HM":
asset.StartHours = machine.StartHours;
if (asset.StartHours == "")
asset.StartHours = "0";
break;
case "ADM":
case "RDM":
asset.StartOdometer = machine.StartOdometer;
if (asset.StartOdometer == "")
asset.StartOdometer = "0";
break;
}
assets.push(asset);
}
var item = {
'IID': iid,
'Assets': assets
};
pmquery('SaveMachines', JSON.stringify(item), function (data) {
if (!data || data.length == 0) {
// success
for (var i = 0; i < _ScheduleAssets.length; i++) {
_ScheduleAssets[i].unSaved = false;
}
showAlert(GetTextByKey("P_PM_SAVEASSETLISTSUCCESSFUL", 'Save asset list successful.'));
} else {
showAlert(GetTextByKey("P_PM_FAILEDTOSAVEASSETLIST", 'Failed to save asset list.') + "\n" + data);
}
});
}
var dialogAssets = undefined;
function OnAddAssets() {
if (!dialogAssets) {
dialogAssets = new $assetselector("dialog_assets");
dialogAssets.allowhidden = false;
dialogAssets.onDialogClosed = function () {
showmaskbg(false);
}
dialogAssets.onOK = function (assets) {
if (assets && assets.length > 0) {
setNewSelectedAseets(assets);
}
}
}
showmaskbg(true);
var assets = [];
for (var i = 0; i < _ScheduleAssets.length; i++) {
assets.push(_ScheduleAssets[i].AssetId);
}
dialogAssets.exceptSource = assets;
dialogAssets.showSelector(assets);
}
function convertOdometer(odometer, odounit) {
var unit = scheduleUom;
var value = odometer;
if (odometer > 0 && unit && odounit
&& unit.toLowerCase().charAt(0) != odounit.toLowerCase().charAt(0)) {
if (unit.toLowerCase().startsWith("m"))
value = odometer * 0.6213712;
else
value = odometer / 0.6213712;
}
return Math.round(value);
}
var selectedassetsctrl = undefined;
function setNewSelectedAseets(assets) {
var newassets = [];
for (var i = 0; i < assets.length; i++) {
var a = assets[i].Values;
if (!a.Selected) continue;
var item = {};
item.AssetId = a.Id;
item.Selected = false;
item.VIN = a.VIN;
item.Name = a.Name;
item.MakeName = a.MakeName;
item.ModelName = a.ModelName;
item.EngineHours = a.EngineHours;
item.StartHours = a.EngineHours;
item.Odometer = convertOdometer(a.Odometer, a.OdometerUnits);
item.StartOdometer = item.Odometer;
item.OdometerUnits = a.OdometerUnits;
item.StartDateString = currentdate;
item.StartIntervalValue = "";
item.Enabled = true;
if (scheduletype == "HM" || scheduletype == "RDM") {
var value = 0;
if (scheduletype == "HM")
value = item.StartHours;
else
value = item.StartOdometer;
item.TempIntervals = getIntervalValues(value);
item.TempIntervals.splice(0, 0, "");
}
else {
item.TempIntervals = [];
item.TempIntervals.push("");
if (allintervals) {
for (var j = 0; j < allintervals.length; j++)
item.TempIntervals.push(allintervals[j]);
}
}
newassets.push(item);
}
if (newassets.length == 0) {
showmaskbg(false);
return;
}
$('#dialog_selectedassets')
.css({
'top': (document.documentElement.clientHeight - $('#dialog_machinegroup').height()) / 3,
'left': (document.documentElement.clientWidth - $('#dialog_machinegroup').width()) / 2
}).showDialog();
selectedassetsctrl.setData(newassets);
}
function OnSetAssetsDialogOK() {
for (var i = 0; i < selectedassetsctrl.vue.source.length; i++) {
var asset = selectedassetsctrl.vue.source[i];
asset.unSaved = true;
_ScheduleAssets.push(asset);
}
getMatchSelectedMachines();
showmaskbg(false);
$('#dialog_selectedassets').hideDialog();
}
function OnRemoveAssets() {
_SelectedUnSavedMachines = [];
var assets = [];
var assetwillalerts = "";
for (var i = 0; i < _ScheduleAssets.length; i++) {
var asset = _ScheduleAssets[i];
if (asset.unSaved && !asset.Selected)
_SelectedUnSavedMachines.push(asset);
if (asset.Selected) {
assets.push(asset.AssetId);
if (asset.UnMaintainedAlert && asset.UnMaintainedAlert > 0) {
if (assetwillalerts == "")
assetwillalerts = asset.Name;
else
assetwillalerts += ", " + asset.Name;
}
}
}
if (assets.length == 0)
return;
var item = {
'ScheduleID': iid,
'Assets': assets
};
var msg = GetTextByKey("P_PM_DOYOUWANTTOREMOVEHESELECTEDASSETSFROMTHISSCHEDULE", "Do you want to remove the selected assets from this schedule?");
if (assetwillalerts != "") {
var msg = GetTextByKey("P_PM_DELETEUNASSIGNEDPMALERTSFORTHEFOLLOWINGASSETSTIPS", "Select OK below will result in the deletion of existing unassigned PM alerts for the following assets: ");
msg += assetwillalerts + ".<br/>";
msg += GetTextByKey("P_PM_DELTEALERTSYESORNOTIPS", "If you do not want those alerts deleted, select CANCEL and assign appropriate alerts to a maintenance record or work order in asset health prior to deletion/removal.");
}
showConfirm(msg, GetTextByKey("P_PM_REMOVEASSETS", 'Remove Assets'), function (e) {
pmquery('RemovePMAssets', JSON.stringify(item), function (data) {
if (!data || data.length == 0) {
showAlert(GetTextByKey("P_PM_ASSETSREMOVEDSUCCESSFULLY", 'Assets removed successfully.'));
GetSelectedMachines();
} else {
showAlert(GetTextByKey("P_PM_FAILEDTOREMOVEASSETS", 'Failed to remove assets.') + "\n" + data);
}
});
});
}