$(function () { 'use strict'; BemsWebApplication.Popup.WorkOrder = { create: function (viewModel) { var workRequestFacilities = viewModel.popup.facilities, workRequestDataModel = viewModel.dataModel, workOrderDataModel = new BWA.FmsWorkOrderViewModel(); var facilities = ko.observableArray(), businessFields = ko.observableArray(); var facilitySearchPopup = viewModel.popup.facilitySearchPopup, facilityFactory = BWA.Factory.Facility, facilityGridView = ko.observable(undefined), facilityDataGridOptions = undefined; var facilityDataSource = facilityFactory.getBasicDataSourceRef({ dbModeIId: 'FmsWorkOrderToFacility', primaryKeyDataField: 'WorkRequestId' }); function onSelectedFacilities(selectedFacilities) { var workRequestId = workRequestDataModel.WorkRequestId(); _.each(selectedFacilities, function (sf) { // 어차피 SiteId와 BusinessField는 동일 할 수 밖에 없으므로 비교하지 않는다. var found = _.some(facilities(), function (f) { //return f.FacilityCode() === sf.FacilityCode(); try { return f.FacilityCode() === sf.FacilityCode(); } catch (e) { return f.FacilityCode() === sf.FacilityCode; } }); if (found) return; //facilities.push({ // SiteId: sf.SiteId, // WorkRequestId: ko.observable(workRequestId), // FacilityCode: sf.FacilityCode, // Name: sf.Name, //}); //2019.08.08 수정 try { facilities.push({ SiteId: ko.observable(sf.SiteId()), WorkRequestId: ko.observable(workRequestId), FacilityCode: ko.observable(sf.FacilityCode()), Name: ko.observable(sf.Name()), FirstClassId: ko.observable(sf.FirstClassId()), SecondClassId: ko.observable(sf.SecondClassId()), ThirdClassId: ko.observable(sf.ThirdClassId()), }); } catch (e) { facilities.push({ SiteId: ko.observable(sf.SiteId), WorkRequestId: ko.observable(workRequestId), FacilityCode: ko.observable(sf.FacilityCode), Name: ko.observable(sf.Name), FirstClassId: ko.observable(sf.FirstClassId), SecondClassId: ko.observable(sf.SecondClassId), ThirdClassId: ko.observable(sf.ThirdClassId), }); } }); facilityGridView().refresh(); } var isNew = true, popupVisible = ko.observable(false), toolbarItems = [ { location: 'before', text: $G('workOrder') }, //{ // location: 'after', widget: 'button', options: { // text: $G('facilityInsertion'), icon: 'search', // clickAction: function () { // facilitySearchPopup.show(onSelectedFacilities); // } // } //}, //{ // location: 'after', widget: 'button', options: { // text: $G('facilityDeletion'), // icon: 'remove', // type: 'danger', // clickAction: BWA.Popup.Facility.getDeleteSelectedFacilitiesFunc(facilityGridView, facilities) // } //}, { location: 'after', widget: 'button', options: { text: $G('workOrder'), icon: 'save', clickAction: handleSave } }, { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handleClose } } ], popupOptions = { width: 1200, height: 650, //shading: false, shadingColor: 'rgba(0,0,0,0.0)', showingAction: handlePopupShowing, visible: popupVisible, closeOnOutsideClick: false, animation: utils.popup.createAnimation() }; function handleSave() { if (isNew) { insert(); return; } update(); } function insert() { BWA.db.FmsWorkOrder.insert(workOrderDataModel.toJS()).done(function (response, responseKey) { var keys = BWA.db.extractKeysObject('FmsWorkRequest', workRequestDataModel); workRequestDataModel.WorkProgressId($Code.WorkProgress.WORK_STANDBY); BWA.db.FmsWorkRequest.update(keys, { WorkProgressId: workRequestDataModel.WorkProgressId() }).done(function () { handleAfterSave(responseKey); }); }); } function update() { var keys = BWA.db.extractKeysObject('FmsWorkOrder', workOrderDataModel); BWA.db.FmsWorkOrder.update(keys, workOrderDataModel.toJS()).done(function () { popupVisible(false); utils.toast.show($G('successSaveWorkOrderMsg')); }); } function handleClose() { popupVisible(false); } function handleBeforePopupShowingPromise(isNewInPopup, dataViewModel, clickRowData) { } function handlePopupShowing() { $("#gridContainer_WorkOrder").dxDataGrid({ paging: { pageSize: 13, enabled: true } }); isNew = (workRequestDataModel.WorkProgressId() === $Code.WorkProgress.WORK_PLAN); if (isNew) { //var userInfo = BWA.UserInfo workOrderDataModel.SiteId(workRequestDataModel.SiteId()); workOrderDataModel.WorkRequestId(workRequestDataModel.WorkRequestId()); workOrderDataModel.BusinessFieldName(workRequestDataModel.BusinessFieldName()); workOrderDataModel.BusinessFieldId(workRequestDataModel.BusinessFieldId()); workOrderDataModel.OrderUserName(workRequestDataModel.RequestUserName()); workOrderDataModel.OrderUserId(workRequestDataModel.RequestUserId()); workOrderDataModel.OrderDate(new Date()); workOrderDataModel.StartWorkDate(workRequestDataModel.StartWorkDate()); workOrderDataModel.Title(workRequestDataModel.Title()); //workOrderDataModel.Content(workRequestDataModel.Content()); workOrderDataModel.Content(""); facilities(workRequestFacilities()); } else { // 키값이 WorkRequest와 동일하다. var keys = BWA.db.extractKeysObject('FmsWorkOrder', workRequestDataModel); BWA.db.FmsWorkOrder.byKey(keys).done(function (data) { workOrderDataModel.fromJS(data); var eq = BWA.DataUtil.constructEqualFilter; var and = BWA.DataUtil.andFilter; facilityDataSource.filter([ eq('SiteId', workOrderDataModel.SiteId()), and, //eq('BusinessFieldId', dataViewModel.BusinessFieldId()), //and, eq('WorkRequestId', workOrderDataModel.WorkRequestId()) ]); facilityDataSource.load().done(function (dbFacilities) { facilities(dbFacilities); }); }); } } function handlePopupShown(isEditMode, isNew, dataViewModel) { } function closeAfterSave() { popupVisible(false); viewModel.popupVisible(false); viewModel.refreshList(); utils.toast.show($G('successSaveWorkOrderMsg')); } // 점검계획 정보가 저장된 후에 호출 된다. // 등록이면 responseKey가 있고, 수정이면 없다. function handleAfterSave(responseKey) { var array = facilities(); if (_.isEmpty(array)) { closeAfterSave(); return; } var postData; var parameters = { SiteId: responseKey.SiteId, WorkRequestId: responseKey.WorkRequestId }; postData = _.map(array, function (f) { return { SiteId: parameters.SiteId, WorkRequestId: parameters.WorkRequestId, FacilityCode: f.FacilityCode() }; }); BWA.api.post('FmsWorkOrderToFacility', postData, parameters).done(function () { closeAfterSave(); }); } workOrderDataModel.BusinessFieldName = ko.observable(); workOrderDataModel.OrderUserName = ko.observable(); //facilityDataGridOptions = BWA.Popup.Facility.getModifiableDataGridOptions( facilities, ko.observable(true), facilityGridView); facilityDataGridOptions = BWA.Popup.Facility.getReadOnlyDataGridOptions(facilities, ko.observable(true)); return { popupOptions: popupOptions, toolbarItems: toolbarItems, dataModel: workOrderDataModel, facilityDataGridOptions: facilityDataGridOptions, show: function () { popupVisible(true); } }; } } });