123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497 |
- BemsWebApplication.CurrentWork = function (params, viewInfo) {
- "use strict";
- var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true),
- workTypeDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeType'),
- progressDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeProgress'),
- businessFields = ko.observableArray(), workTypes = ko.observableArray(), progresses = ko.observableArray();
- var FmsMaterialExdataSource = new DevExpress.data.DataSource({
- store: BemsWebApplication.odata.FmsMaterialEx,
- requireTotalCount: true,
- pageSize: 1000
- });
- var Today = new Date();
- // hcLee 2018 01 29 -->
- var imagefileUrl1 = ko.observable(), imagefileUrl2 = ko.observable(), dropZone1 = null, dropZone2 = null, uploadedFileInfo = {}, uploadedFileInfo2 = {};
- // <-- hcLee 2018 01 29
- //var currentDataModel = null;
- //권한설정
- var hasnotModificationPermission = ko.observable(true);
- var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName);
- var isVisibleExecutionButton = ko.observable(true);
- var isAddHistoryButton = ko.observable(true);
- var isEditHistoryButton = ko.observable(false);
- var isWorkDone = ko.observable(false);
- var isWorkHold = ko.observable(false);
- var popup, addWorkResultCheckItemPopup = null;
- var workResultCheckItemMaterialPopup = null;
- var WorkResultCheckItemFacilityPopup = null;
- //workExecutionRegisterPopup
- var deferredForSearch = new $.Deferred();
- var workTypesForSearch = 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',
- 'StartDate', 'EndDate',
- 'ConfirmedDate', 'ConfirmedUserId', 'IsConfirmed',
- 'CauseClassId', 'Content',
- 'FmsWorkRequest/WorkTypeId',
- 'FmsWorkOrder/Title',
- 'FmsWorkOrder/OrderDate',
- 'FmsWorkRequest/WorkProgressId',
- 'CmUser/Name', // 작업자
- 'CmUser1/Name', // 승인자
- 'FmsWorkRequest/FmsWorkCodeType/Name',
- 'FmsWorkRequest/CmBusinessField/Name',
- 'FmsWorkRequest/FmsWorkCodeProgress/Name',
- 'FmsWorkRequest/BusinessFieldId',
- 'FmsWorkOrder/Content',
- 'FmsWorkRequest/Content',
- 'FmsWorkRequest/StartWorkDate',
- ],
- expand: [
- 'FmsWorkRequest',
- 'FmsWorkOrder',
- 'FmsWorkRequest/FmsWorkCodeType',
- 'FmsWorkRequest/CmBusinessField',
- 'FmsWorkRequest/FmsWorkCodeProgress',
- 'FmsWorkOrder/CmBusinessField', 'CmUser', 'CmUser1'],
- //expand: ['FmsWorkCodeType', 'CmBusinessField', 'FmsWorkCodeProgress', 'CmUser', 'CmUser1'],
- extendOptions: {
- forceOriginalField: true
- }
- };
- if (!useBusinessFiltering) {
- dataSourceOptions.filter = [
- eq('SiteId', BWA.UserInfo.SiteId()),
- and,
- [
- eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORKING),
- 'or',
- eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORK_HOLD)
- ],
- ];
- }
- else {
- dataSourceOptions.filter = [
- eq('SiteId', BWA.UserInfo.SiteId()),
- and,
- [
- eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORKING),
- 'or',
- eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORK_HOLD)
- ],
- and,
- [eq('FmsWorkRequest/BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('FmsWorkRequest/BusinessFieldId', 1)]];
- }
- var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsWorkResult', {
- popupWidth: 890,
- dataSourceOptions: dataSourceOptions,
- columns: [
- { dataField: 'WorkRequestId', caption: $G('number'), width: '8%', alignment: 'center' },
- { dataField: 'FmsWorkRequest/CmBusinessField/Name', caption: $G('businessFieldName'), width: '10%', alignment: 'center' },
- { dataField: 'FmsWorkRequest/FmsWorkCodeType/Name', caption: $G('workTypeName'), width: '10%', alignment: 'center' },
- {
- dataField: 'FmsWorkOrder/OrderDate', caption: $G('orderedDate'), width: '12%', alignment: 'center', sortOrder: 'desc', visible: false,
- customizeText: function (cellInfo) {
- return $G.date(cellInfo.value);
- }
- },
- {
- dataField: 'StartDate', caption: $G('startDate'), width: '12%', alignment: 'center',
- customizeText: function (cellInfo) {
- return $G.date(cellInfo.value);
- }
- },
- {
- //dataField: 'EndDate', caption: $G('endDate'), width: '12%', alignment: 'center', 2016 03 08 수정
- dataField: 'EndDate', caption: '종료예정일', width: '12%', alignment: 'center',
- customizeText: function (cellInfo) {
- return $G.date(cellInfo.value);
- }
- },
- { dataField: 'FmsWorkOrder/Title', caption: '작업명', width: '35%', alignment: 'center' },
- { dataField: 'FmsWorkRequest/FmsWorkCodeProgress/Name', caption: $G('workProgressName'), width: '10%', alignment: 'center' },
- { dataField: 'CmUser/Name', caption: '작업자', width: '15%', alignment: 'center' },
- //{ dataField: 'CmUser1/Name', caption: '승인자', width: '15%', alignment: 'center' }
- { dataField: 'FmsWorkRequest/Content', caption: '신청내용', width: '0%', alignment: 'center' },
- ],
- promiseDataInSearchView: deferredForSearch.promise(),
- searchViewItems: _.compact([
- { id: 'FmsWorkRequest/BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch },
- //{ id: 'WorkTypeId', ignoreValue: 0, defaultValue: 0, dataSource: workTypesForSearch },
- { id: 'CmUser/Name' },
- { id: 'FmsWorkOrder/Title' },
- { id: 'FmsWorkRequest/WorkProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch },
- { id: 'StartDate', type: 'dateRange', isOnlyDate: true },
- { id: 'EndDate', type: 'dateRange', isOnlyDate: true }
- ]),
- getAddedToolbarItemsInPopup: function (e) {
- var isEditModeInPopup = e.isEditModeInPopup;
- return [
- {
- location: 'after', widget: 'button', options: {
- text: '작업이력추가', icon: 'add', type: 'success', visible: isAddHistoryButton, clickAction: showNewWorkItem, disabled: hasnotModificationPermission
- }
- },
- {
- location: 'after', widget: 'button', options: {
- text: '작업진행', icon: 'add', type: 'success', visible: isWorkHold, clickAction: workReStart, disabled: hasnotModificationPermission
- }
- }
- //{
- // location: 'after', widget: 'button', options: {
- // text: '작업이력수정', icon: 'save',
- // clickAction: function () {
- // if (popup && popup.modifyWorkItem) {
- // popup.modifyWorkItem();
- // }
- // }
- // }
- //}
- ];
- },
- beforeInsertingDataViewModel: function (dataModel) {
- return true; // hcLee
- },
- handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
- dataGrid.clearSelection();
- var data = clickRow.data;
- var dataModel = viewModel.dataModel;
- if (data['FmsWorkRequest/WorkProgressId']() >= $Code.WorkProgress.WORK_COMPLETE) {
- isAddHistoryButton(false);
- }
- else {
- isAddHistoryButton(true);
- }
- if (data['FmsWorkRequest/WorkProgressId']() == $Code.WorkProgress.WORK_COMPLETE) {
- isWorkDone(true);
- //addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkDone(true);
- }
- else {
- isWorkDone(false);
- }
- if (data['FmsWorkRequest/WorkProgressId']() == $Code.WorkProgress.WORK_HOLD) {
- isWorkHold(true);
- //addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkDone(false);
- //addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkHold(true);
- }
- else {
- //addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkHold(false);
- isWorkHold(false);
- }
- viewModel.dataModel.BusinessFieldId = ko.observable();
- viewModel.dataModel.BusinessFieldId(data['FmsWorkRequest/BusinessFieldId']());
- if (popup && popup.handleBeforeShowingPopupForEdit) {
- popup.handleBeforeShowingPopupForEdit(data, dataModel);
- }
- //popup.show();
- popupVisible(true);
- workResultCheckItemMaterialPopup.visible(true);
- },
- handleBeforePopupShowingPromise: function () {
- if (popup && popup.handleBeforePopupShowingPromise) {
- popup.handleBeforePopupShowingPromise.apply(popup, arguments);
- }
- },
- handleAfterLoadingModelByKey: function () {
- if (popup && popup.handleAfterLoadingModelByKey) {
- popup.handleAfterLoadingModelByKey.apply(popup, arguments);
- }
- },
- handlePopupShowing: function () {
- if (popup && popup.handlePopupShowing) {
- popup.handlePopupShowing.apply(this, arguments);
- }
- },
- handlePopupShown: function (editMode, isNewInPopup, dataModel) {
- if (popup && popup.handlePopupShown) {
- popup.handlePopupShown.apply(this, arguments);
- }
- },
- handleSaveButtonInPopup: function (isInsert) {
- if (isInsert === false) {
- if (popup && popup.handleAfterSave) {
- popup.handleAfterSave(undefined);
- }
- }
- },
- handleAfterSaveInPopup: function (responseKey, response) {
- if (popup && popup.handleAfterSave) {
- popup.handleAfterSave(responseKey, response);
- }
- },
- handleViewShowing: function (dataModel) {
- //권한설정
- hasnotModificationPermission(!BWA.UserInfo.hasPermissionOfModification(viewInfo.viewName));
- 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);
- });
- var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName)
- if (useBusinessFiltering) {
- dataSourceOptions.filter.push('and');
- dataSourceOptions.filter.push([eq('FmsWorkRequest/BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('FmsWorkRequest/BusinessFieldId', 1)]);
- businessFieldDataSource.filter([
- eq('SiteId', BWA.UserInfo.SiteId()),
- and,
- [eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)]
- ]);
- }
- $.when(
- businessFieldDataSource.load(),
- workTypeDataSource.load(),
- progressDataSource.load()
- ).done(function (businessFieldResult, workTypeResult, progressResult) {
- businessFields(businessFieldResult[0]);
- workTypes(workTypeResult[0]);
- progresses(progressResult[0]);
- businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', businessFields()));
- workTypesForSearch($SearchView.createArrayOfSelectBox('WorkTypeId', workTypes()));
- progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', progresses()));
- deferredForSearch.resolve();
- });
- },
- handleViewShown: function () {
- setupDropZone(addWorkResultCheckItemPopup.isEditMode, addWorkResultCheckItemPopup.workCheckItemViewModel);
- },
- hasnotModificationPermission: hasnotModificationPermission //권한설정
- });
- viewModel.isEditHistoryButton = isEditHistoryButton;
- viewModel.isAddHistoryButton = isAddHistoryButton;
- viewModel.isWorkDone = isWorkDone;
- viewModel.isWorkHold = isWorkHold;
- viewModel.businessFields = businessFields;
- viewModel.workTypes = workTypes;
- viewModel.isAddPopup = ko.observable(true);
- viewModel.isApprovalMode = ko.observable(false);
- viewModel.isWorkHistory = ko.observable(false);
- // hcLee 2018 01 29 -->
- viewModel.imagefileUrl1 = imagefileUrl1;
- viewModel.imagefileUrl2 = imagefileUrl2;
- // <-- hcLee 2018 01 29
- viewModel.dataModel.MaterialExdataSource = ko.observable();
- //위치이동 2016 04 05 hcLee
- //addWorkResultCheckItemPopup = viewModel.addWorkResultCheckItemPopup = BWA.Popup.AddWorkResultCheckItem.create(viewInfo, viewModel);
- popup = viewModel.popup = BWA.Popup.CurrentWork.create(viewInfo, viewModel);
- //workExecutionRegisterPopup = viewModel.workExecutionRegisterPopup = BWA.Popup.WorkExecutionRegister.create(viewInfo, viewModel);
- //위치이동 2016 04 05 hcLee
- addWorkResultCheckItemPopup = viewModel.addWorkResultCheckItemPopup = BWA.Popup.AddWorkResultCheckItem.create(viewInfo, viewModel, popup.refreshListData);
- //addWorkResultCheckItemPopup = viewModel.addWorkResultCheckItemPopup = BWA.Popup.AddWorkResultCheckItem.create(viewInfo, viewModel);
- workResultCheckItemMaterialPopup = viewModel.workResultCheckItemMaterialPopup = BWA.Popup.WorkResultCheckItemMaterial.create(viewInfo, viewModel);
- WorkResultCheckItemFacilityPopup = viewModel.WorkResultCheckItemFacilityPopup = BWA.Popup.WorkResultCheckItemFacility.create(viewInfo, viewModel);
- // 2016 04 05
- //viewModel.addWorkResultCheckItemPopup.refreshListData = popup.refreshListData();
- viewModel.popupOptions.visible.subscribe(function (visible) {
- if (!visible) {
- viewModel.gridView().refresh();
- }
- });
- viewModel.popupOptions.position = { offset: '-200 0' };
- viewModel.popupOptions.height = '830px';
- function saveWorkResultAproval() {
- utils.toast.show('Approval Clicked!');
- }
- viewModel.addWorkResultCheckItemPopup.popupVisible.subscribe(function (visible) {
- if (visible) {
- popup.refreshListData();
- workResultCheckItemMaterialPopup.refreshMaterialGrid();
- }
- //addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkDone(false); disable필요
- /* if (data['FmsWorkRequest/WorkProgressId']() == $Code.WorkProgress.WORK_HOLD) {
- addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkHold(true);
- }
- else
- {
- addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkHold(false);
- }*/
- });
- function showNewWorkItem() {
- if (addWorkResultCheckItemPopup.workCheckItemViewModel !== undefined) {
- var dataModel = viewModel.dataModel;
- addWorkResultCheckItemPopup.workCheckItemViewModel.CheckDate(dataModel.EndDate());
- addWorkResultCheckItemPopup.workCheckItemViewModel.TextResult('');
- addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkDone(false);
- addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkHold(false);
- // hcLee 2018 02 01 -->
- isEditHistoryButton(false);
- addWorkResultCheckItemPopup.workCheckItemViewModel.FileId1(null);
- addWorkResultCheckItemPopup.workCheckItemViewModel.AttachmentFileName1(null);
- addWorkResultCheckItemPopup.workCheckItemViewModel.FileId2(null);
- addWorkResultCheckItemPopup.workCheckItemViewModel.AttachmentFileName2(null);
- // <-- hcLee 2018 02 01
- ///////////////////////2019-11-19 변경
- viewModel.dropZone1 = dropZone1 = null;
- viewModel.dropZone2 = dropZone2 = null;
- ///////////////////////2019-11-19 변경
- viewModel.addWorkResultCheckItemPopup.isNew(true);
- }
- addWorkResultCheckItemPopup.show();
- }
- function workReStart() {
- utils.dialog.confirm("작업보류를 작업진행으로 변경하시겠습니까?", "작업 재진행", function (result) {
- if (result) {
- var parameters = {
- SiteId: BWA.UserInfo.SiteId(),
- WorkRequestId: viewModel.dataModel.WorkRequestId(),
- WorkProgressId: $Code.WorkProgress.WORKING,
- UserId: BWA.UserInfo.UserId()
- };
- // FmsWorkRequest 업데이트: WorkProgressId(5)
- BWA.api.post('FmsWorkRequest', null, parameters).done(function () {
- viewModel.popupVisible(false);
- });
- }
- });
- }
- ///////////////////////2019-11-19 변경
- function setupDropZone(isEditModeInPopup, dataViewModel) {
- var timer = null;
- isEditModeInPopup.subscribe(function (value) {
- if (value) {
- if (timer) { clearInterval(timer); }
- timer = setInterval(function () {
- if ($('#workcheckitemDropZone1').length) {
- if (_.isNull(dropZone1)) {
- dropZone1 = BWA.DropZone.create({
- id: '#workcheckitemDropZone1',
- categoryId: $Code.FileCategory.WORK,
- uploadedFileInfo: uploadedFileInfo,
- handleRemoveBeforePromise: function () {
- var keys = BWA.db.extractKeysObject('FmsWorkResultCheckItem', dataViewModel);
- return BWA.db.FmsWorkResultCheckItem.update(keys, { FileId1: null });
- },
- handleSuccess: function (fileInfo) {
- if (uploadedFileInfo.FileId) {
- dataViewModel.FileId1(fileInfo.FileId);
- var keys = BWA.db.extractKeysObject('FmsWorkResultCheckItem', dataViewModel);
- if (keys.CheckItemId != null) {
- return BWA.db.FmsWorkResultCheckItem.update(keys, { FileId1: fileInfo.FileId })
- .done(function (res) {
- popup.refreshListData();
- });
- }
- }
- },
- handleRemovedFile: function () {
- dataViewModel.FileId1(null);
- }
- });
- viewModel.dropZone1 = dropZone1;
- }
- }
- if ($('#workcheckitemDropZone2').length) {
- if (_.isNull(dropZone2)) {
- dropZone2 = BWA.DropZone.create({
- id: '#workcheckitemDropZone2',
- categoryId: $Code.FileCategory.WORK,
- uploadedFileInfo: uploadedFileInfo2,
- handleRemoveBeforePromise: function () {
- var keys = BWA.db.extractKeysObject('FmsWorkResultCheckItem', dataViewModel);
- return BWA.db.FmsWorkResultCheckItem.update(keys, { FileId2: null });
- },
- handleSuccess: function (fileInfo) {
- if (uploadedFileInfo.FileId) {
- dataViewModel.FileId2(fileInfo.FileId);
- var keys = BWA.db.extractKeysObject('FmsWorkResultCheckItem', dataViewModel);
- if (keys.CheckItemId != null) {
- return BWA.db.FmsWorkResultCheckItem.update(keys, { FileId2: fileInfo.FileId })
- .done(function (res) {
- popup.refreshListData();
- });
- }
- }
- },
- handleRemovedFile: function () {
- dataViewModel.FileId2(null);
- },
- });
- viewModel.dropZone2 = dropZone2;
- }
- }
- }, 800);
- }
- else {
- if (timer) {
- clearInterval(timer);
- timer = null;
- }
- dropZone1 = null;
- dropZone2 = null;
- }
- });
- }
- ///////////////////////2019-11-19 변경
- return viewModel;
- };
|