| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440 | BemsWebApplication.Accident = function (params, viewInfo) {    "use strict";    var imagefileUrl1 = ko.observable(),        imagefileUrl2 = ko.observable(),        imagefileUrl3 = ko.observable(),        dropZone1 = null,        dropZone2 = null,        uploadedFileInfo = {};    var isEditModeInPopup = ko.observable(false);    var eq = BWA.DataUtil.constructEqualFilter,        and = BWA.DataUtil.andFilter,        noteq = BWA.DataUtil.constructNotEqualFilter;    var accidentTypeDataSource = BemsWebApplication.db.createDataSource('FmsAccidentCodeType', true, false, true),        companyDataSource = BemsWebApplication.db.createDataSource('CmCompany', true, true),        departmentDataSource = BemsWebApplication.db.createDataSource('CmDepartment', true, true);    var accidentTypesForSearch = ko.observableArray();    var accidentTypes = ko.observableArray(),         companies = ko.observableArray(),         departments = ko.observableArray();    var deferredForSearch = new $.Deferred();    var dataSourceOptions = {        select: [            'SiteId',	        'AccidentId',	        'Name',	        'StartDate',	        'EndDate',	        'AccidentTypeId',	        'DepartmentId',	        'AccidentLocation',	        'Reason',	        'Action',	        'Damage',	        'Measurement',	        'FileId1',	        'FileId2',	        'FileId3',	        'CompanyId',            'CmFile/Name',            'CmFile1/Name',            'CmFile2/Name',            'FmsAccidentCodeType/Name',            'CmDepartment/Name',            'CmCompany/Name',        ],        expand: [            'CmDepartment',            'CmCompany',            'FmsAccidentCodeType',            'CmFile',            'CmFile1',            'CmFile2'        ],        extendOptions: {            forceOriginalField: true        }    };    function setupDropZone(isEditModeInPopup, dataViewModel) {        var timer = null;        isEditModeInPopup.subscribe(function (value) {//2019-11-12 변경            if (value) {                if (timer) { clearInterval(timer); }                timer = setInterval(function () {                    if ($('#accidentDropZone1').length) {                        if (_.isNull(dropZone1)) {                            dropZone1 = BWA.DropZone.create({                                id: '#accidentDropZone1',                                categoryId: $Code.FileCategory.ACCIDENT,                                uploadedFileInfo: uploadedFileInfo,                                handleRemoveBeforePromise: function () {                                    var keys = BWA.db.extractKeysObject('FmsAccident', dataViewModel);                                    return BWA.db.FmsAccident.update(keys, { FileId1: null });                                },                                handleSuccess: function (fileInfo) {                                    if (uploadedFileInfo.FileId) {                                        dataViewModel.FileId1(fileInfo.FileId);                                        var keys = BWA.db.extractKeysObject('FmsAccident', dataViewModel);                                        if (keys.AccidentId != null) {                                            return BWA.db.FmsAccident.update(keys, { FileId1: fileInfo.FileId })                                                .done(function (res) {                                                    $('#gridContainer').dxDataGrid('instance').refresh();                                                });                                        }                                    }                                },                                handleRemovedFile: function () {                                    dataViewModel.FileId1(null);                                },                            });                        }                    }                    if ($('#accidentDropZone2').length) {                        if (_.isNull(dropZone2)) {                            dropZone2 = BWA.DropZone.create({                                id: '#accidentDropZone2',                                categoryId: $Code.FileCategory.ACCIDENT,                                uploadedFileInfo: uploadedFileInfo,                                handleRemoveBeforePromise: function () {                                    var keys = BWA.db.extractKeysObject('FmsAccident', dataViewModel);                                    return BWA.db.FmsAccident.update(keys, { FileId2: null });                                },                                handleSuccess: function (fileInfo) {                                    if (uploadedFileInfo.FileId) {                                        dataViewModel.FileId2(fileInfo.FileId);                                        var keys = BWA.db.extractKeysObject('FmsAccident', dataViewModel);                                        if (keys.AccidentId != null) {                                            return BWA.db.FmsAccident.update(keys, { FileId2: fileInfo.FileId })                                                .done(function (res) {                                                    $('#gridContainer').dxDataGrid('instance').refresh();                                                });                                        }                                    }                                },                                handleRemovedFile: function () {                                    dataViewModel.FileId2(null);                                },                            });                        }                    }                }, 100);            }            else {                if (timer) {                    clearInterval(timer);                    timer = null;                }                dropZone1 = null;                dropZone2 = null;            }        });    }    var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsAccident', {        dataSourceOptions: dataSourceOptions,        columns: [            { dataField: 'AccidentId', caption: $G('number'), width: '10%', alignment: 'center' },            { dataField: 'FmsAccidentCodeType/Name', caption: '사고유형', width: '20%', alignment: 'center' },            { dataField: 'Name', caption: '사고명', width: '80%', alignment: 'center' },            { dataField: 'CmDepartment/Name', caption: '담당부서', width: '30%', alignment: 'center' },            {                dataField: 'StartDate', caption: '사고발생일', width: '20%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            },            {                dataField: 'EndDate', caption: '조치완료일', width: '20%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            },        ],        paging: {            enabled: true,            pageSize: 18        },        pager: {        },        "export": {            enabled: true,            fileName: '사고 목록',        },        onExporting: function (e) {            e.component.columnOption("AccidentId", "visible", false);        },        onExported: function (e) {            e.component.columnOption("AccidentId", "visible", true);        },        popupWidth: '900px',        searchViewItems: [            { id: 'Name' },            { id: 'AccidentTypeId', ignoreValue: 0, defaultValue: 0, dataSource: accidentTypesForSearch },            { id: 'StartDate', type: 'dateRange', isOnlyDate: true },            { id: 'EndDate', type: 'dateRange', isOnlyDate: true }        ],        beforeInsertingDataViewModel: function (dataModel, dbModelId) {            var dfd = $.Deferred();            if (dataModel.StartDate() > dataModel.EndDate()) {                return dfd.resolve(false, '사고발생일은 조치완료일 이전으로 선택해야 합니다.');            } else {                return dfd.resolve(true);;            }        },        beforeUpdateDataViewModel: function () {            var dataModel = viewModel.dataModel;            if (dataModel.StartDate() > dataModel.EndDate()) {                utils.toast.show('사고발생일은 조치완료일 이전으로 선택해야 합니다.', 'error');                return 0;            } else {                return 2;            }        },        handleAfterSaveInPopup: function (responseKey, response) {//2019-11-12 변경            viewModel.dataModel.AccidentId(responseKey.AccidentId);        },        handleSaveButtonInPopup: function (isInsert) {//2019-11-12 변경            if (isInsert === false) {//추가, 변경 여부                if (_.isNull(dropZone1) === false) {                    if (viewModel.dataModel.FileId1() != null) { //변경 - 그림삭제                        var temp1 = {                            SiteId: BWA.UserInfo.SiteId(),                            FileId: viewModel.dataModel.FileId1()                        }                        BWA.db.CmFile.byKey(temp1).done(function (data) {                            dropZone1.removeFile(data);                            dropZone1.processQueue();                        });                    }                    else {                        dropZone1.processQueue();//변경 - 그림 삭제 필요없음                    }                }            }            else {                if (_.isNull(dropZone1) === false) { //추가                    if (viewModel.dataModel.FileId1() == null) {                        dropZone1.processQueue();                    }                }            }            if (isInsert === false) {//추가, 변경 여부                if (_.isNull(dropZone2) === false) {                    if (viewModel.dataModel.FileId2() != null) { //변경 - 그림삭제                        var temp2 = {                            SiteId: BWA.UserInfo.SiteId(),                            FileId: viewModel.dataModel.FileId2()                        }                        BWA.db.CmFile.byKey(temp2).done(function (data) {                            dropZone2.removeFile(data);                            dropZone2.processQueue();                        });                    }                    else {                        dropZone2.processQueue();//변경 - 그림 삭제 필요없음                    }                }            }            else {                if (_.isNull(dropZone2) === false) { //추가                    if (viewModel.dataModel.FileId2() == null) {                        dropZone2.processQueue();                    }                }            }        },        handleBeforeDelete: function () {//2019-11-12 변경            var temp1 = {                SiteId: BWA.UserInfo.SiteId(),                FileId: viewModel.dataModel.FileId1()            }            if (temp1.FileId != null) {                BWA.db.CmFile.byKey(temp1).done(function (data) {                    if ($('#accidentDropZone3').length) {                        if (_.isNull(dropZone1)) {                            dropZone1 = BWA.DropZone.create({                                id: '#accidentDropZone3',                                categoryId: $Code.FileCategory.ACCIDENT                            });                            dropZone1.removeFile(data);                            dropZone1 = null;                        }                    }                });            }            var temp2 = {                SiteId: BWA.UserInfo.SiteId(),                FileId: viewModel.dataModel.FileId2()            }            if (temp2.FileId != null) {                BWA.db.CmFile.byKey(temp2).done(function (data) {                    if ($('#accidentDropZone4').length) {                        if (_.isNull(dropZone2)) {                            dropZone2 = BWA.DropZone.create({                                id: '#accidentDropZone4',                                categoryId: $Code.FileCategory.ACCIDENT                            });                            dropZone2.removeFile(data);                            dropZone2 = null;                        }                    }                });            }        },        handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) {            if (isNewInPopup() == false) {                BWA.DataUtil.setArrayDataSourceFilter(departmentDataSource, 'CompanyId', dataViewModel.CompanyId(), departments);                if (_.isNull(dataViewModel.FileId1()) === false) {                    imagefileUrl1('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, dataViewModel.SiteId(), dataViewModel.FileId1()));                }                else {                    imagefileUrl1(undefined);                }                if (_.isNull(dataViewModel.FileId2()) === false) {                    imagefileUrl2('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, dataViewModel.SiteId(), dataViewModel.FileId2()));                }                else {                    imagefileUrl2(undefined);                }                if (_.isNull(dataViewModel.FileId3()) === false) {                    imagefileUrl3('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, dataViewModel.SiteId(), dataViewModel.FileId3()));                }                else {                    imagefileUrl3(undefined);                }            }        },        handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {            dataGrid.clearSelection();            var data = clickRow.data;            var dataModel = viewModel.dataModel;            if (data['CompanyId']() != null)                dataModel.CompanyName = $KoSet(dataModel.CompanyName, data['CmCompany/Name']());            else dataModel.CompanyName('');            if (data['DepartmentId']() != null)                dataModel.DepartmentName = $KoSet(dataModel.DepartmentName, data['CmDepartment/Name']());            else dataModel.DepartmentName('');            dataModel.AccidentTypeName = $KoSet(dataModel.AccidentTypeName, data['FmsAccidentCodeType/Name']());            if (data['FileId1']() != null)                dataModel.AttachmentFileName1(data['CmFile/Name']());            else dataModel.AttachmentFileName1('');            if (data['FileId2']() != null)                dataModel.AttachmentFileName2(data['CmFile1/Name']());            else dataModel.AttachmentFileName2('');            if (data['FileId3']() != null)                dataModel.AttachmentFileName3(data['CmFile2/Name']());            else dataModel.AttachmentFileName3('');            popupVisible(true);        },        handleViewShowing: function (dataModel) {            $.when(                accidentTypeDataSource.load(),                companyDataSource.load()            )            .done(function (dbAccidents, dbCompanies) {                accidentTypes(dbAccidents[0]);                companies(dbCompanies[0]);                departments([]);                accidentTypesForSearch($SearchView.createArrayOfSelectBox('AccidentTypeId', accidentTypes()));                deferredForSearch.resolve();            });        },        handleViewShown: function (dataViewModel, isEditModeInPopup) {            setupDropZone(isEditModeInPopup, dataViewModel);        },        handleCancelInPopup: function () {            isEditModeInPopup(false);        },        handlePopupButtonEdit: function (dataModel) {            isEditModeInPopup(true);        },        handlePopupButtonClose: function () {            isEditModeInPopup(false);        },        handleSaveSuccess: function () {            if (_.isNull(dropZone1) === false) {                dropZone1.resetUploadedFileInfo();            }            if (_.isNull(dropZone2) === false) {                dropZone2.resetUploadedFileInfo();            }            isEditModeInPopup(false);        },        handlePopupShowing: function (isEditMode, isNew, dataViewModel) {            imagefileUrl1(undefined);            imagefileUrl2(undefined);            if (_.isNull(dropZone1) === false) dropZone1.resetUploadedFileInfo();            if (_.isNull(dropZone2) === false) dropZone2.resetUploadedFileInfo();            if (isNew) { // 신규등록인 경우                          dropZone1 = null;                dropZone2 = null;            }        },        handlePopupShown: function (isEditMode, isNew, dataViewModel) {            var accidentTypes = viewModel.accidentTypes();            isEditModeInPopup(false);            if (isNew) { // 신규등록인 경우                 isEditModeInPopup(true);                if (!_.isEmpty(accidentTypes)) {                    dataViewModel.AccidentTypeId(accidentTypes[0].AccidentTypeId());                }            }        }    });    viewModel.handleSelectBoxChangeCompanyInPopup = function (e) {        BWA.DataUtil.setArrayDataSourceFilter(departmentDataSource, 'CompanyId', e.value, departments);        viewModel.dataModel.DepartmentId(null);    }    viewModel.imagefileUrl1 = imagefileUrl1;    viewModel.imagefileUrl2 = imagefileUrl2;    viewModel.imagefileUrl3 = imagefileUrl3;    viewModel.isEditModeInPopup = isEditModeInPopup;    viewModel.accidentTypes = accidentTypes;    viewModel.companies = companies;    viewModel.departments = departments;    viewModel.dataModel.CompanyName = ko.observable();    viewModel.dataModel.DepartmentName = ko.observable();    viewModel.dataModel.AccidentTypeName = ko.observable();    viewModel.dataModel.AttachmentFileName1 = ko.observable();    viewModel.dataModel.AttachmentFileName2 = ko.observable();    viewModel.dataModel.AttachmentFileName3 = ko.observable();    return viewModel;};
 |