123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 |
- BemsWebApplication.FacilityWorkHistory2 = function (params, viewInfo) {
- "use strict";
- var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName);
- var facilityClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass');
- var facilityClassDataSource2 = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass');
- var buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true),
- floorDataSource = BemsWebApplication.db.createDataSource('CmFloor');
- var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true),
- workTypeDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeType'),
- progressDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeProgress'),
- searchBuildingId = ko.observable(),
- searchBuildings = ko.observableArray(),
- searchFloorId = ko.observable(),
- businessFields = ko.observableArray(),
- workTypes = ko.observableArray(),
- progresses = ko.observableArray(), //CmFacility
- facilityClass = ko.observableArray(),
- searchFloors = ko.observableArray(),
- floors = ko.observableArray(),
- buildings = ko.observableArray();
- var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];
- var defaultSearchBuildingArray = $SearchView.createDefaultArray('BuildingId'),
- defaultSearchFloorArray = $SearchView.createDefaultArray('FloorId');
- var isVisibleExecutionButton = ko.observable(true);
- var handleBuildingInSearchView = function (e) {
- if (e.value === 0) {
- searchFloors(defaultSearchFloorArray.slice(0));
- searchFloorId(0);
- return 0;
- }
- BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, searchFloors, defaultSearchFloorArray);
- }
- var FmsMaterialExdataSource = new DevExpress.data.DataSource({
- store: BemsWebApplication.odata.FmsMaterialEx,
- requireTotalCount: true,
- pageSize: 100
- });
- var isWorkDone = ko.observable(false);
- var isWorkHold = ko.observable(false);
- var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()],
- searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()];
- var isAddHistoryButton = ko.observable(false);
- var defaultSearchClassArray = $SearchView.createDefaultArray('FacilityClassId');
- var imagefileUrl1 = ko.observable(), imagefileUrl2 = ko.observable();
- var popup, addWorkResultCheckItemPopup = null, workExecutionRegisterPopup = null;
- var deferredForSearch = new $.Deferred();
- var workTypesForSearch = ko.observableArray(),
- facilityClassForSearch = ko.observableArray(),
- businessFieldsForSearch = ko.observableArray(),
- progressesForSearch = ko.observableArray();
- var eq = BWA.DataUtil.constructEqualFilter,
- and = BWA.DataUtil.andFilter,
- noteq = BWA.DataUtil.constructNotEqualFilter;
- var selectedFacilityData = ko.observable(),
- selectedUserData = params.selectedUserData || ko.observable();
- var dataSourceOptions = {
- select: [
- 'SiteId',
- 'WorkRequestId',
- 'FacilityCode',
- 'CmFacility/FirstClassId',
- 'CmFacility/SecondClassId',
- 'CmFacility/ThirdClassId',
- 'CmFacility/Name',
- 'CmFacility/BuildingId',
- 'CmFacility/FloorId',
- 'CmFacility/BemsFacilityType/Name',
- 'FmsWorkOrder/FmsWorkRequest/WorkTypeId',
- 'FmsWorkOrder/FmsWorkRequest/BusinessFieldId',
- 'FmsWorkOrder/Title',
- 'FmsWorkOrder/OrderDate',
- 'FmsWorkOrder/StartWorkDate',
- 'FmsWorkOrder/FmsWorkResult/StartDate',
- 'FmsWorkOrder/FmsWorkResult/EndDate',
- 'FmsWorkOrder/FmsWorkResult/ConfirmedUserId',
- 'FmsWorkOrder/FmsWorkResult/ConfirmedDate',
- 'FmsWorkOrder/FmsWorkRequest/WorkProgressId',
- 'FmsWorkOrder/FmsWorkRequest/StartWorkDate',
- 'FmsWorkOrder/FmsWorkRequest/CmBusinessField/Name',
- 'FmsWorkOrder/CmUser/Name', // 작업지시자
- //'CmUser1/Name', // 반려자
- 'FmsWorkOrder/FmsWorkRequest/FmsWorkCodeType/Name',
- 'FmsWorkOrder/CmBusinessField/Name',
- 'FmsWorkOrder/FmsWorkRequest/FmsWorkCodeProgress/Name',
- 'FmsWorkOrder/FmsWorkResult/CmUser/Name', // 작업자
- 'FmsWorkOrder/FmsWorkResult/CmUser1/Name', // 승인자
- 'FmsWorkOrder/Content', // 2016 05 30 추가
- ],
- expand: [
- 'CmFacility/BuildingId',
- 'CmFacility/FloorId',
- 'FmsWorkOrder/FmsWorkRequest',
- 'FmsWorkOrder/FmsWorkResult',
- 'FmsWorkOrder/FmsWorkResult/CmUser',
- 'FmsWorkOrder/FmsWorkResult/CmUser1',
- 'FmsWorkOrder/FmsWorkRequest/FmsWorkCodeType',
- 'FmsWorkOrder/FmsWorkRequest/FmsWorkCodeProgress',
- 'FmsWorkOrder/FmsWorkRequest/CmBusinessField',
- 'FmsWorkOrder/CmBusinessField',
- 'FmsWorkOrder/CmUser',
- 'CmFacility',
- 'CmFacility/BemsFacilityType',
- ],
- extendOptions: {
- forceOriginalField: true
- }
- };
- if (!useBusinessFiltering) {
- dataSourceOptions.filter = [
- eq('SiteId', BWA.UserInfo.SiteId()),
- and,
- ['FmsWorkOrder/FmsWorkRequest/WorkProgressId', '=', 6]
- ];
- }
- else {
- dataSourceOptions.filter = [
- eq('SiteId', BWA.UserInfo.SiteId()),
- and,
- ['FmsWorkOrder/FmsWorkRequest/WorkProgressId', '=', 6],
- and,
- [eq('FmsWorkOrder/FmsWorkRequest/BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('FmsWorkOrder/FmsWorkRequest/BusinessFieldId', 1)]];
- }
- var searchFirstClassId = false, searchSecondClassId = false, searchThirdClassId = false;
- var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsWorkOrderToFacility', {
- popupWidth: 1060,
- //번호/설비유형/설비명/작업구분/작업명/작업시작일/작업완료일/작업자/승인자"로
- dataSourceOptions: dataSourceOptions,
- columns: [
- { dataField: 'WorkRequestId', caption: $G('number'), width: '5%', alignment: 'center' },
- { dataField: 'FmsWorkOrder/FmsWorkRequest/FmsWorkCodeType/Name', caption: $G('workTypeName'), width: '7%', alignment: 'center' },
- {
- dataField: 'FmsWorkOrder/FmsWorkResult/StartDate', caption: '시작일', width: '9%', alignment: 'center',
- customizeText: function (cellInfo) { return $G.date(cellInfo.value); }
- },
- {
- dataField: 'FmsWorkOrder/FmsWorkResult/EndDate', caption: '종료일', width: '9%', alignment: 'center', sortOrder: 'desc',
- customizeText: function (cellInfo) { return $G.date(cellInfo.value); }
- },
- {
- dataField: 'CmFacility/FirstClassId', caption: '대분류', width: '14%', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < facilityClassForSearch().length; i++) {
- if (facilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return facilityClassForSearch()[i].Name();
- }
- }
- }
- },
- {
- dataField: 'CmFacility/SecondClassId', caption: '중분류', width: '14%', alignment: 'center', customizeText: function (cellInfo) {
- for (var i = 1; i < facilityClassForSearch().length; i++) {
- if (facilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return facilityClassForSearch()[i].Name();
- }
- }
- }
- },
- {
- dataField: 'CmFacility/ThirdClassId', caption: '소분류', width: '14%', alignment: 'center', customizeText: function (cellInfo) {
- for (var i = 1; i < facilityClassForSearch().length; i++) {
- if (facilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {
- return facilityClassForSearch()[i].Name();
- }
- }
- }
- },
- { dataField: 'CmFacility/BemsFacilityType/Name', caption: '설비유형', width: '14%', alignment: 'center', visible: false },
- { dataField: 'CmFacility/Name', caption: '설비명칭', width: '20%', alignment: 'center' },
- { dataField: 'FmsWorkOrder/Title', caption: '작업명', width: '38%', alignment: 'center' },
- { dataField: 'FmsWorkOrder/FmsWorkResult/CmUser/Name', caption: '작업자', width: '10%', alignment: 'center', visible: false },
- { dataField: 'FmsWorkOrder/FmsWorkResult/CmUser1/Name', caption: '승인자', width: '10%', alignment: 'center', visible: false }
- ],
- searchViewItems: [
- { id: 'FmsWorkOrder/FmsWorkRequest/BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch },
- // 2016 03 09 이처럼 id가 CmFacility/FirstClassId 같이 관계키인 경우 이벤트가 연결되지 않는다. handleFirstClassChangedValueInSearchView를 직접연결한다.
- { id: 'CmFacility/FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView },
- { id: 'CmFacility/SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'CmFacility/FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView },
- { id: 'CmFacility/ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'CmFacility/FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2] },
- { id: 'CmFacility/Name' },
- { id: 'FmsWorkOrder/Title' },
- { id: 'FmsWorkOrder/FmsWorkRequest/WorkProgressId' },
- { id: 'CmFacility/BuildingId', ignoreValue: 0, defaultValue: 0, value: searchBuildingId, dataSource: searchBuildings, handleChangedValue: handleBuildingInSearchView },
- { id: 'CmFacility/FloorId', ignoreValue: 0, defaultValue: 0, withCheckId: 'CmFacility/BuildingId', value: searchFloorId, dataSource: searchFloors },
- { id: 'FmsWorkOrder/FmsWorkResult/StartDate', type: 'dateRange', isOnlyDate: true },
- //{ id: 'FmsWorkOrder/FmsWorkResult/EndDate', type: 'dateRange' },
- { id: 'FmsWorkOrder/FmsWorkResult/EndDate', type: 'dateRange', isOnlyDate: true },
- { id: 'FmsWorkOrder/FmsWorkResult/CmUser/Name' },
- { id: 'FmsWorkOrder/FmsWorkResult/CmUser1/Name' },
- { id: 'FmsWorkOrder/FmsWorkRequest/WorkTypeId', ignoreValue: 0, defaultValue: 0, dataSource: workTypesForSearch },
- ],
- promiseDataInSearchView: deferredForSearch.promise(),
- handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
- dataGrid.clearSelection();
- var data = clickRow.data;
- var dataModel = viewModel.dataModel;
- if (data['FmsWorkOrder/FmsWorkRequest/WorkProgressId']() >= $Code.WorkProgress.WORK_COMPLETE)
- isWorkDone(true);
- else
- isWorkDone(false);
- if (data['FmsWorkOrder/FmsWorkRequest/WorkProgressId']() == $Code.WorkProgress.WORK_HOLD) {
- isWorkHold(true);
- isWorkDone(false);
- }
- else {
- isWorkHold(false);
- }
- isVisibleExecutionButton(false);
- if (popup && popup.handleBeforeShowingPopupForEdit) {
- popup.handleBeforeShowingPopupForEdit(data, dataModel);
- }
- popupVisible(true);
- },
- handlePopupShowing: function () {
- viewModel.visibleEditButton(false);
- viewModel.visibleDeleteButton(false);
- if (popup && popup.handlePopupShowing) {
- popup.handlePopupShowing.apply(this, arguments);
- }
- },
- handlePopupShown: function (editMode, isNewInPopup, dataModel) {
- if (popup && popup.handlePopupShown) {
- popup.handlePopupShown.apply(this, arguments);
- }
- },
- handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) {
- //if (isNewInPopup() == false) {
- // BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', dataViewModel.FirstClassId(), facilityClasses[1]).done(function () {
- // BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', dataViewModel.SecondClassId(), facilityClasses[2]);
- // });
- // BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', dataViewModel.BuildingId(), floors).done(function () {
- // BWA.DataUtil.setArrayDataSourceFilter(zoneDataSource, 'FloorId', dataViewModel.FloorId(), zones);
- // });
- //}
- },
- handleViewShowing: function (dataModel) {
- FmsMaterialExdataSource.filter([
- ["SiteId", "=", BWA.UserInfo.SiteId()]
- ]);
- FmsMaterialExdataSource.load().done(function (result) {
- if (result != null) {
- viewModel.dataModel.MaterialExdataSource(result);
- }
- }).fail(function (error) {
- utils.toast.show(error);
- });
- facilityClassDataSource.filter([
- ['SiteId', '=', BWA.UserInfo.SiteId()],
- 'and',
- ['ParentFacilityClassId', '=', null]
- ]);
- facilityClassDataSource2.filter([
- ['SiteId', '=', BWA.UserInfo.SiteId()]
- ]);
- if (useBusinessFiltering) {
- businessFieldDataSource.filter([
- eq('SiteId', BWA.UserInfo.SiteId()),
- and,
- [eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)]
- ]);
- }
- $.when(
- businessFieldDataSource.load(),
- workTypeDataSource.load(),
- progressDataSource.load(),
- facilityClassDataSource.load(),
- buildingDataSource.load(),
- facilityClassDataSource2.load()
- ).done(function (businessFieldResult, workTypeResult, progressResult, facilityClassResult, result2, facilityClassResult2) {
- businessFields(businessFieldResult[0]);
- workTypes(workTypeResult[0]);
- progresses(progressResult[0]);
- facilityClass(facilityClassResult2[0]);
- facilityClassForSearch($SearchView.createArrayOfSelectBox('FacilityClassId', facilityClass()));
- businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', businessFields()));
- workTypesForSearch($SearchView.createArrayOfSelectBox('WorkTypeId', workTypes()));
- progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', progresses()));
- facilityClasses[0](facilityClassResult[0]);
- searchFacilityClasses[0](defaultSearchClassArray.slice(0).concat(facilityClassResult[0]));
- initializeSearchClasses();
- buildings(result2[0]);
- searchFloors(defaultSearchFloorArray.slice(0));
- searchBuildings(defaultSearchBuildingArray.slice(0).concat(result2[0]));
- deferredForSearch.resolve();
- viewModel.gridView().refresh();
- });
- },
- handleViewShown: function () {
- }
- });
- floorDataSource.filter('CmFacility/BuildingId', -1);
- var handleFirstClassChangedValueInSearchView = function (e) {
- if (e.value === 0) {
- initializeSearchClasses();
- return;
- }
- BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray);
- };
- var handleSecondClassChangedValueInSearchView = function (e) {
- if (e.value === 0) {
- initializeSearchClasses(true);
- return;
- }
- BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray);
- };
- function initializeSearchClasses(onlyThird) {
- if (onlyThird === undefined || onlyThird === false) {
- searchFacilityClasses[1](defaultSearchClassArray.slice(0));
- searchFacilityClassValues[1](0);
- }
- searchFacilityClasses[2](defaultSearchClassArray.slice(0));
- searchFacilityClassValues[2](0);
- }
- viewModel.handleSelectBoxChangeFirstClass = function (e) {
- BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClasses[1]);
- viewModel.dataModel.SecondClassId(null);
- viewModel.dataModel.ThirdClassId(null);
- };
- viewModel.handleSelectBoxChangeSecondClass = function (e) {
- BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClasses[2]);
- viewModel.dataModel.ThirdClassId(null);
- };
- addWorkResultCheckItemPopup = viewModel.addWorkResultCheckItemPopup = BWA.Popup.AddWorkResultCheckItem.create(viewInfo, viewModel);
- viewModel.businessFields = businessFields;
- viewModel.workTypes = workTypes;
- //viewModel.handleFirstClassChangedValueInSearchView = handleFirstClassChangedValueInSearchView;
- //viewModel.dataModel.ParentFacilityName = $KoSet(viewModel.dataModel.ParentFacilityName, '');
- viewModel.searchFacilityClasses = searchFacilityClasses;
- // 2016 03 09 이처럼 id가 CmFacility/FirstClassId 같이 관계키인 경우 이벤트가 연결되지 않는다. handleFirstClassChangedValueInSearchView를 직접연결한다. dxview도 수정했다.
- viewModel.handleFirstClassChangedValueInSearchView = handleFirstClassChangedValueInSearchView;
- viewModel.imagefileUrl1 = imagefileUrl1;
- viewModel.imagefileUrl2 = imagefileUrl2;
- viewModel.isAddHistoryButton = isAddHistoryButton;
- popup = viewModel.popup = BWA.Popup.FacilityWorkHistory2.create(viewInfo, viewModel);
- //workExecutionRegisterPopup = viewModel.workExecutionRegisterPopup = BWA.Popup.WorkExecutionRegister.create(viewInfo, viewModel);
- viewModel.isWorkDone = isWorkDone;
- viewModel.isWorkHold = isWorkHold;
- viewModel.buildings = buildings;
- viewModel.floors = floors;
- viewModel.facilityClasses = facilityClasses;
- viewModel.dataModel.MaterialExdataSource = ko.observable();
- viewModel.handleSecondClassChangedValueInSearchView = handleSecondClassChangedValueInSearchView;
- return viewModel;
- };
|