| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 | BemsWebApplication.EquipHistory = function (params, viewInfo) {    "use strict";    var codeTypeDataSource = BemsWebApplication.db.createDataSource('FmsEquipmentCodeType', true, false, true),        codeStateTypeDataSource = BemsWebApplication.db.createDataSource('FmsEquipmentCodeStateType', false, false, true),        warehouseDataSource = BemsWebApplication.db.createDataSource('FmsMaterialWarehouse', true, false, true);    var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter;    var equipmentExDataSource = BWA.DataUtil.createDataSource({        dataSourceOptions: {            store: BemsWebApplication.odata.FmsEquipmentEx,            map: function (item) {                return new BemsWebApplication.FmsEquipmentExViewModel(item);            }        },        filter: ([            eq('SiteId', BWA.UserInfo.SiteId())        ]),    });    var codeTypes = ko.observableArray(),        codeStateTypes = ko.observableArray(),        warehouses = ko.observableArray(),        equipmentExs = ko.observableArray();    var IsAdditionalEquipment = ko.observable(false);    var codeTypesForSearch = ko.observableArray(),        codeStateTypesForSearch = ko.observableArray(),        warehousesForSearch = ko.observableArray();    var deferredForSearch = new $.Deferred();    var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsEquipmentHistory', {        dataSourceOptions: {            select: [                'SiteId',                'EquipmentHistoryId',                'EquipmentId',                'TotalStockCount',                'CurrentStockCount',                'RentCount',                'CurrentRentCount',                'ReturnCount',                'LossCount',                'StoredCount',                'EquipmentRentId',                'EquipmentStateTypeId',                'AddDate',                'UpdateDate',                'IsReturned',                'FmsEquipment/FmsEquipmentCodeType/Name',                'FmsEquipment/FmsEquipmentCodeType/EquipmentTypeId',                'FmsEquipment/Name',                'FmsEquipment/CmUser/Name',                'FmsEquipmentCodeStateType/Name',                'FmsEquipment/Standard',                'FmsEquipment/Unit',                'FmsEquipmentRentInfo/RentUser',                'FmsEquipmentRentInfo/RentDate',                'FmsEquipmentRentInfo/ReturnDueDate',                'FmsEquipmentRentInfo/ReturnFixDate',                'FmsEquipment/FmsMaterialWarehouse/Name'            ],            expand: [                'FmsEquipmentRentInfo/CmUser1',                'FmsEquipment/FmsEquipmentCodeType',                'FmsEquipmentCodeStateType',                'FmsEquipment/CmUser',                'FmsEquipmentRentInfo',                'FmsEquipmentRentInfo/CmUser1',                'FmsEquipment/FmsMaterialWarehouse',            ],            extendOptions: {                forceOriginalField: true            }        },        columns: [            { dataField: 'EquipmentHistoryId', caption: $G('number'), width: '10%', alignment: 'center', sortOrder: 'desc' },            { dataField: 'FmsEquipmentCodeStateType/Name', caption: '구분', width: '8%', alignment: 'center' },            { dataField: 'FmsEquipment/FmsEquipmentCodeType/Name', caption: '분류', width: '8%', alignment: 'center' },            { dataField: 'FmsEquipment/Name', caption: '공기구명', width: '22%', alignment: 'center' },            { dataField: 'FmsEquipment/Standard', caption: '규격', width: '22%', alignment: 'center' },            { dataField: 'TotalStockCount', caption: '전체수량', width: '10%', alignment: 'center', format: 'fixedPoint' },            { dataField: 'StoredCount', caption: '입고수량', width: '10%', alignment: 'center', format: 'fixedPoint' },            { dataField: 'CurrentRentCount', caption: '대여수량', width: '10%', alignment: 'center', format: 'fixedPoint' },            { dataField: 'ReturnCount', caption: '반납수량', width: '10%', alignment: 'center', format: 'fixedPoint' },            { dataField: 'LossCount', caption: '손실수량', width: '10%', alignment: 'center', format: 'fixedPoint' },            { dataField: 'CurrentStockCount', caption: '보유수량', width: '10%', alignment: 'center', format: 'fixedPoint' },            {                dataField: 'AddDate', caption: '등록일', width: '15%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            },            {                dataField: 'FmsEquipmentRentInfo/RentUser', caption: '대여자', width: '10%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            },            {                dataField: 'FmsEquipmentRentInfo/RentDate', caption: '대여일', width: '14%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            },            {                dataField: 'FmsEquipmentRentInfo/ReturnDueDate', caption: '반납예정일', width: '14%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            },            {                dataField: 'FmsEquipmentRentInfo/ReturnFixDate', caption: '반납일', width: '14%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            }        ],        paging: {            pageSize: 18,            enabled: true        },        pager: {},        "export": {            enabled: true,            fileName: '공기구 이력 목록',        },        onExporting: function (e) {            e.component.columnOption("EquipmentHistoryId", "visible", false);        },        onExported: function (e) {            e.component.columnOption("EquipmentHistoryId", "visible", true);        },        cellPrepared: function (cellElement, cellInfo) {            // 2 보다 큰 경우 대여수 0            if (cellInfo.rowType == 'data') {                if (cellInfo.data.EquipmentStateTypeId() > 2) {                    if (cellInfo.columnIndex == 7) {                        $(cellElement).text('0');                    }                }            }        },        sort: { field: "EquipmentHistoryId", desc: true },        searchViewItems: [            { id: 'FmsEquipment/Name' },            { id: 'FmsEquipment/Standard' },            { id: 'FmsEquipmentRentInfo/RentUser' },            { id: 'EquipmentStateTypeId', ignoreValue: 0, defaultValue: 0, dataSource: codeStateTypesForSearch }, // 구분            { id: 'FmsEquipment/FmsEquipmentCodeType/EquipmentTypeId', ignoreValue: 0, defaultValue: 0, dataSource: codeTypesForSearch }, // 분류             { id: 'AddDate', type: 'dateRange', isOnlyDate: true },        ],        popupWidth: 400,        handleViewShowing: function (dataModel) {            $.when(                codeStateTypeDataSource.load(),                codeTypeDataSource.load(),                warehouseDataSource.load()            ).done(function (codeStateTypeResult, codeTypeResult, warehouseResult) {                codeStateTypes(codeStateTypeResult[0]);                codeTypes(codeTypeResult[0]);                warehouses(warehouseResult[0]);                codeStateTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentStateTypeId', codeStateTypes()));                codeTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentTypeId', codeTypes()));                warehousesForSearch($SearchView.createArrayOfSelectBox('WarehouseId', warehouses()));                deferredForSearch.resolve();            });        },        handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {        },        handlePopupShowing: function (isNewInPopup, dataViewModel) {            // 저장 버튼             viewModel.toolbarItems[4].options.clickAction = this.handlePopupButtonSave;            dataViewModel.RegisterUserId = $KoSet(dataViewModel.RegisterUserId, BWA.UserInfo.UserId());            dataViewModel.EquipmentTypeId = ko.observable();            dataViewModel.WarehouseId = ko.observable();            dataViewModel.Unit = ko.observable();            dataViewModel.Standard = ko.observable();            dataViewModel.SupplierName = ko.observable();            dataViewModel.SupplierPhoneNo = ko.observable();        },        handlePopupShown: function (isEditMode, isNew, dataViewModel) {            $.when(                equipmentExDataSource.load()             ).done(function (equipmentExResult) {                 equipmentExs(equipmentExResult);             });            if (isNew) { // 신규등록인 경우                 dataViewModel.AddDate($G.date(new Date()));                dataViewModel.UpdateDate($G.date(new Date()));                dataViewModel.RegisterUserId(BWA.UserInfo.UserId());                dataViewModel.StoredCount(1);            }        },        handlePopupButtonSave: function () {            var dataViewModel = viewModel.dataModel;            if (IsAdditionalEquipment()) {                if (dataViewModel.EquipmentId() == null) {                    utils.toast.show('추가입고할 공기구를 선택하세요.', 'error');                    return;                }            }            else {                if (dataViewModel.EquipmentTypeId() == null) {                    utils.toast.show('입고할 공기구 분류를 선택하세요.', 'error');                    return;                }                else if (dataViewModel.Name() == null) {                    utils.toast.show('입고할 공기구 이름을 입력하세요.', 'error');                    return;                }            }            if (dataViewModel.WarehouseId() == null) {                utils.toast.show('입고될 창고위치를 선택하세요.', 'error');                return;            }            var parameters = {                SiteId: dataViewModel.SiteId(),                IsAdditionalEquipment: IsAdditionalEquipment()            };            var postData = dataViewModel.toJS();            BWA.api.post('FmsEquipment', postData, parameters).done(                function () {                    utils.toast.show($G('successDatabaseInsertionMsg'));                    viewModel.popupVisible(false);                    viewModel.gridView().refresh();                });        }    });    function processValueChange(e) {        var foundModel = _.find(equipmentExs(), function (x) {            return x.EquipmentId() === e.value;        });        if (foundModel !== undefined) {            var dataViewModel = viewModel.dataModel;            dataViewModel.EquipmentId(foundModel.EquipmentId());            dataViewModel.EquipmentTypeId(foundModel.EquipmentTypeId());            dataViewModel.WarehouseId(foundModel.WarehouseId());            dataViewModel.Unit(foundModel.Unit());            dataViewModel.Standard(foundModel.Standard());            dataViewModel.UpdateDate(new Date());            dataViewModel.SupplierName(foundModel.SupplierName());            dataViewModel.SupplierPhoneNo(foundModel.SupplierPhoneNo());            dataViewModel.TotalStockCount(foundModel.TotalStockCount());            dataViewModel.CurrentStockCount(foundModel.CurrentStockCount());        }    }    viewModel.processValueChange = processValueChange;    viewModel.IsAdditionalEquipment = IsAdditionalEquipment;    viewModel.equipmentExs = equipmentExs;    viewModel.codeTypes = codeTypes;    viewModel.codeStateTypes = codeStateTypes;    viewModel.warehouses = warehouses;    return viewModel;};
 |