123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- $(function () {
- 'use strict';
- // TODO : 아래 코드 정리 필요 함
- //BemsWebApplication.Popup.WorkExecutionRegister = {
- BWA.Popup = BWA.Popup || {};
- BWA.Popup.WorkExecutionRegister = {
- create: function (viewInfo, viewModel) {
- var dataModelResult = new BWA.FmsWorkResultViewModel();
- var popupVisible = ko.observable();
- var isNew = ko.observable(true),
- isEditMode = ko.observable(true);
- var facilities = ko.observableArray(),
- facilitiesInView = ko.observableArray(),
- businessFields = ko.observableArray();
- var facilitySearchPopup = null,
- facilityFactory = BWA.Factory.Facility,
- facilityGridView = ko.observable(undefined),
- facilityDataGridOptions,
- modifiableFacilityDataGridOptions = undefined;
- var facilityDataSource = facilityFactory.getBasicDataSourceRef({
- dbModeIId: 'FmsWorkOrderToFacility',
- primaryKeyDataField: 'WorkRequestId'
- });
- var popupOptions = {
- position: { offset: '0 -50' },
- width: '560px',
- height: 'auto',
- //shading: false,
- shadingColor: 'rgba(0,0,0,0.0)',
- visible: popupVisible,
- closeOnOutsideClick: false,
- animation: utils.popup.createAnimation(),
- shownAction: function () {
- }
- };
- var toolbarItems = [
- { location: 'before', text: '작업수행 - 상세정보' },
- { location: 'after', widget: 'button', options: { text: $G('save'), icon: 'save', clickAction: handlePopupButtonSave } },
- { location: 'after', widget: 'button', options: { text: $G('cancel'), icon: 'cancel', clickAction: handlePopupButtonClose } },
- ];
- function handlePopupButtonSave() {
- if (isNew()) {
- if ($G.date(dataModelResult.StartDate()) > $G.date(dataModelResult.EndDate())) {
- utils.toast.show('작업종료일을 작업시작일 이후로 설정하시기 바랍니다.', 'error');
- return;
- }
- //BWA.db.FmsWorkOrder.update(viewModel.dataModel.toJS()).done(function () {
- BWA.db.FmsWorkResult.insert(dataModelResult.toJS()).done(
- function () {
- var array = viewModel.popup.facilities();
- var postData;
- var parameters = {
- SiteId: dataModelResult.SiteId(),
- WorkRequestId: dataModelResult.WorkRequestId()
- };
- postData = _.map(array, function (f) {
- return {
- SiteId: dataModelResult.SiteId(),
- WorkRequestId: dataModelResult.WorkRequestId(),
- FacilityCode: f.FacilityCode()
- };
- });
- var promise = BWA.api.post('FmsWorkResultToFacility', postData, parameters);
- promise.done(function () {
- viewModel.dataModel.StartWorkDate(dataModelResult.StartDate());
- var keys = BWA.db.extractKeysObject('FmsWorkOrder', viewModel.dataModel);
- BWA.db.FmsWorkOrder.update(keys, viewModel.dataModel.toJS()).done(function (res) {
- utils.toast.show($G('successDatabaseProcessMsg'));
- popupVisible(false);
- viewModel.popupVisible(false);
- viewModel.gridView().refresh();
- });
- });
- }
- );
- //});
- }
- }
- function handlePopupButtonClose() {
- popupVisible(false);
- }
- function isValidateWithFunction(errorMessage) {
- if (_.isEmpty(facilities())) {
- errorMessage.message = '점검을 위한 시설이 없습니다.';
- return false;
- }
- return true;
- }
- function handleBeforePopupShowingPromise(isNewInPopup, dataViewModel, clickRowData) {
- var workProgressId;
- if (isNewInPopup()) {
- workProgressId = $Code.WorkProgress.WORK_PLAN;
- }
- else {
- workProgressId = clickRowData['FmsWorkRequest/WorkProgressId'](); // clickRowData.WorkProgressId();
- dataViewModel.WorkProgressId = ko.observable();
- dataViewModel.WorkProgressId(workProgressId);
- }
- }
- function handlePopupShowing(isNewInPopup, dataModel, selectedData) {
- }
- function handlePopupShown(isEditMode, isNew, dataViewModel) {
- }
- // 점검계획 정보가 저장된 후에 호출 된다.
- // 등록이면 responseKey가 있고, 수정이면 없다.
- function handleAfterSave(responseKey) {
- var array = facilities();
- if (_.isEmpty(array)) {
- return;
- }
- var siteId,
- workRequestId;//, businessFieldId;
- if (_.isUndefined(responseKey)) {
- var dataModel = viewModel.dataModel;
- siteId = dataModel.SiteId();
- //businessFieldId = dataModel.BusinessFieldId();
- workRequestId = dataModel.WorkRequestId();
- }
- else {
- siteId = responseKey.SiteId;
- //businessFieldId = responseKey.BusinessFieldId;
- workRequestId = responseKey.WorkRequestId;
- }
- var postData;
- var parameters = {
- SiteId: siteId,
- //BusinessFieldId: businessFieldId,
- WorkRequestId: workRequestId
- };
- postData = _.map(array, function (f) {
- return {
- SiteId: siteId,
- //BusinessFieldId: businessFieldId,
- WorkRequestId: workRequestId,
- FacilityCode: f.FacilityCode()
- };
- });
- BWA.api.post('FmsWorkOrderToFacility', postData, parameters);
- }
- function handleAfterLoadingModelByKey(data, dataViewModel, isNewInPopup) {
- // 작업지시 세부 내용은 수정/삭제 할 수 없음
- viewModel.visibleEditButton(false);
- viewModel.visibleDeleteButton(false);
- var eq = BWA.DataUtil.constructEqualFilter;
- var and = BWA.DataUtil.andFilter;
- facilityDataSource.filter([
- eq('SiteId', dataViewModel.SiteId()),
- and,
- eq('WorkRequestId', dataViewModel.WorkRequestId())
- ]);
- facilityDataSource.load().done(function (dbFacilities) {
- facilitiesInView(dbFacilities);
- });
- }
- function handleBeforeShowingPopupForEdit(rowData, dataViewModel) {
- dataViewModel.BusinessFieldName(rowData['FmsWorkRequest/CmBusinessField/Name']());
- dataViewModel.WorkTypeName(rowData['FmsWorkRequest/FmsWorkCodeType/Name']());
- dataViewModel.RequestUserName(rowData['CmUser/Name']());
- dataViewModel.WorkProgressName(rowData['FmsWorkRequest/FmsWorkCodeProgress/Name']());
- dataViewModel.RejectUserName($KoValue(rowData['CmUser1/Name']));
- }
- popupVisible.subscribe(function (visible) {
- if (!visible) {
- facilitiesInView([]);
- } else {
- var userInfo = BWA.UserInfo;
- dataModelResult.SiteId(viewModel.dataModel.SiteId());
- dataModelResult.WorkRequestId(viewModel.dataModel.WorkRequestId());
- //dataModelResult.Content(viewModel.dataModel.Content());
- dataModelResult.Content(''); // hcLee 2016 03 14
- //var now = moment();
- var time = viewModel.dataModel.StartWorkDate();
- dataModelResult.StartDate(time); //BWA.DataUtil.getDateFromDateTime(time)
- dataModelResult.EndDate(time);
- dataModelResult.WorkerUserId(userInfo.UserId());
- dataModelResult.IsConfirmed(false);
- viewModel.dataModelResult = dataModelResult;
- }
- });
- //isEditModeInPopup.subscribe(function (isEditMode) {
- // if (isEditMode) {
- // facilities(facilitiesInView.slice(0));
- // }
- //});
- viewModel.dataModel.WorkTypeName = ko.observable();
- viewModel.dataModel.BusinessFieldName = ko.observable();
- viewModel.dataModel.RequestUserName = ko.observable();
- viewModel.dataModel.RejectUserName = ko.observable();
- viewModel.dataModel.WorkProgressName = ko.observable();
- facilityDataGridOptions = BWA.Popup.Facility.getReadOnlyDataGridOptions(
- facilitiesInView, viewModel.viewModeInPopup);
- modifiableFacilityDataGridOptions = BWA.Popup.Facility.getModifiableDataGridOptions(
- facilities, viewModel.isEditModeInPopup, facilityGridView);
- viewModel.facilitySearchPopup = facilitySearchPopup = BWA.Popup.Facility.create(viewModel, undefined, {
- isMultipleSelect: true,
- onSelectedFacilities: function (selectedFacilities) {
- var workRequestId = viewModel.dataModel.WorkRequestId();
- _.each(selectedFacilities, function (sf) {
- // 어차피 SiteId와 BusinessField는 동일 할 수 밖에 없으므로 비교하지 않는다.
- var found = _.some(facilities(), function (f) {
- return f.FacilityCode() === sf.FacilityCode();
- });
- if (found) return;
- facilities.push({
- SiteId: sf.SiteId,
- WorkRequestId: ko.observable(workRequestId),
- FacilityCode: sf.FacilityCode,
- Name: sf.Name,
- });
- });
- facilityGridView().refresh();
- }
- });
- return {
- isNew: isNew,
- isEditMode: isEditMode,
- toolbarItems: toolbarItems,
- options: popupOptions,
- facilitySearchPopup: facilitySearchPopup,
- popupVisible: popupVisible,
- facilities: facilitiesInView,
- businessFields: businessFields,
- isValidateWithFunction: isValidateWithFunction,
- facilityDataGridOptions: facilityDataGridOptions,
- modifiableFacilityDataGridOptions: modifiableFacilityDataGridOptions,
- handleAfterLoadingModelByKey: handleAfterLoadingModelByKey,
- handleAfterSave: handleAfterSave,
- handlePopupShowing: handlePopupShowing,
- handlePopupShown: handlePopupShown,
- handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit,
- handleDeleteSelectedFacilities: BWA.Popup.Facility.getDeleteSelectedFacilitiesFunc(facilityGridView, facilities),
- handleBeforePopupShowingPromise: handleBeforePopupShowingPromise,
- };
- }
- }
- });
|