BemsWebApplication.UserCheck = function (params, viewInfo) { 'use strict'; var companyDataSource = BemsWebApplication.db.createDataSource('CmCompany', true, true), departmentDataSource = BemsWebApplication.db.createDataSource('CmDepartment', true, true), positionDataSource = BemsWebApplication.db.createDataSource('CmPosition', true, true), businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true), userGroupDataSource = BemsWebApplication.db.createDataSource('CmUserGroup', true); var companies = ko.observableArray(), departments = ko.observableArray(), positions = ko.observableArray(), businessFields = ko.observableArray(), userGroups = ko.observableArray(); var eq = BWA.DataUtil.constructEqualFilter; var noteq = BWA.DataUtil.constructNotEqualFilter; var PermissionForBrowse = ko.observableArray(false); var PassWord = ko.observableArray(); function chckchar(obj) { var check1 = /^(?=.*[a-zA-Z])(?=.*[0-9]).{10,20}$/.test(obj); //영문,숫자 var check2 = /^(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{10,20}$/.test(obj); //영문,특수문자 var check3 = /^(?=.*[^a-zA-Z0-9])(?=.*[0-9]).{10,20}$/.test(obj); //특수문자, 숫자 if (!(check1 || check2 || check3)) return false; // 비밀번호 정책에 부합하지 않은 경우 (기존 비밀번호인 경우 복호화없이 출력하기 위함) else return true; } // ******** 20190826 복호화 *********** // function unEncrypt(theText) { var output = new String, Temp = new Array(), Temp2 = new Array(), TextSize = theText.length; for (var i = 0; i < TextSize; i++) { Temp[i] = theText.charCodeAt(i); Temp2[i] = theText.charCodeAt(i + 1); } for (i = 0; i < TextSize; i = i + 2) { output += String.fromCharCode(Temp[i] - Temp2[i]); } if (chckchar(output)) return output; else return theText; } // ******** 20190826 복호화 *********** // var cnt = 0; function clickOn() { cnt++; if (cnt == 3) PermissionForBrowse(true); } function PopupButtonClose() { PermissionForBrowse(false); viewModel.popupVisible(false); cnt = 0; } var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmUser', { dataSourceOptions: { select: [ 'SiteId', 'CompanyId', 'DepartmentId', 'UserId', 'Name', 'UserGroupId', 'Certificated', 'BusinessFieldId', 'EmploymentType', 'EmploymentStatus', 'CmPosition/Name', 'CmDepartment/Name', 'CmCompany/Name', 'CmBusinessField/Name', 'CmUserGroup/Name', 'IsScheduleUser', 'IsSI', 'IsMobile', 'Passwd' ], expand: ['CmPosition', 'CmDepartment', 'CmCompany', 'CmBusinessField', 'CmUserGroup'], filter: [ //['UserId', '<>', 'admin'] eq('SiteId', BWA.UserInfo.SiteId()), 'and', noteq('UserId', 'admin'), ], extendOptions: { forceOriginalField: true } }, columns: [ { caption: $G('number'), width: '10%', alignment: 'center' }, { dataField: 'UserId', caption: $G('userId'), width: '15%', alignment: 'center' }, { dataField: 'Name', caption: $G('userName'), width: '15%', alignment: 'center' }, { dataField: 'CmUserGroup/Name', caption: $G('permissionGroupName'), width: '15%', alignment: 'center', //customizeText: function(cellInfo) { // return $Name($G.EmploymentTypeNames, cellInfo.value); //} }, { dataField: 'EmploymentStatus', caption: $G('employmentStatus'), width: '15%', alignment: 'center', customizeText: function (cellInfo) { return $Name($G.EmploymentStatusNames, cellInfo.value); } }, { dataField: 'CmCompany/Name', caption: $G('companyName'), width: '15%', alignment: 'center' }, { dataField: 'CmDepartment/Name', caption: $G('departmentName'), width: '15%', alignment: 'center' } // { caption: $G( 'affiliation' ), width: '15%', alignment: 'center' } ], popupWidth: 720, NoSearchView: true, // 2019.07.25 kgpark 검색버튼 삭제 handleViewShown: function () { businessFieldDataSource.load().done(function (dbBusinessFields) { businessFields(dbBusinessFields); }); userGroupDataSource.load().done(function (dbUserGroups) { userGroups(dbUserGroups); }); companyDataSource.load().done(function (dbCompanies) { companies(dbCompanies); }); cnt = 0; }, handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) { if (!isNewInPopup()) { BWA.DataUtil.setArrayDataSourceFilter(departmentDataSource, 'CompanyId', dataViewModel.CompanyId(), departments); } else { } }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); viewModel.isNewInPopup(false); var data = clickRow.data; var dataModel = viewModel.dataModel; dataModel.CompanyName = $KoSet(dataModel.CompanyName, data['CmCompany/Name']); dataModel.DepartmentName = $KoSet(dataModel.DepartmentName, data['CmDepartment/Name']); dataModel.BusinessFieldName = $KoSet(dataModel.BusinessFieldName, data['CmBusinessField/Name']); dataModel.UserGroupName = $KoSet(dataModel.UserGroupName, data['CmUserGroup/Name']); dataModel.IsScheduleUser = $KoSet(dataModel.IsScheduleUser, data.IsScheduleUser()); dataModel.IsSI = $KoSet(dataModel.IsSI, data.IsSI()); dataModel.IsMobile = $KoSet(dataModel.IsMobile, data.IsMobile()); dataModel.Passwd = $KoSet(dataModel.Passwd, data.Passwd()); if (PermissionForBrowse() == true) { PassWord(unEncrypt(dataModel.Passwd())); //setTimeout(function () { //}, 1000) } else { PassWord(dataModel.Passwd); } popupVisible(true); }, handlePopupShowing: function (that) { positionDataSource.load().done(function (result) { positions(result); }); }, }); viewModel.handleSelectBoxChangeCompanyInPopup = function (e) { BWA.DataUtil.setArrayDataSourceFilter(departmentDataSource, 'CompanyId', e.value, departments); viewModel.dataModel.DepartmentId(null); } viewModel.companyDataSource = companies; viewModel.departmentDataSource = departments; viewModel.positionDataSource = positions; viewModel.businessFieldDataSource = businessFields; viewModel.userGroupDataSource = userGroups; viewModel.employmentTypeNames = $G.EmploymentTypeNames; viewModel.employmentStatusNames = $G.EmploymentStatusNames; viewModel.userLicensePopup = BWA.Popup.UserLicense.create(viewModel, params); // 2016 02 18 hcLee 등록팝업 최초 수행후 안보이는 현상 해결 viewModel.dataModel.CompanyName = ko.observable(); viewModel.dataModel.DepartmentName = ko.observable(); viewModel.dataModel.BusinessFieldName = ko.observable(); viewModel.dataModel.UserGroupName = ko.observable(); //$SearchView.searchViewItems.EmploymentStatus.check(true); //viewModel.searchViewItems.EmploymentStatus.check(true); //viewModel.handleSearchInSearchView = handleSearchInSearchView; var toolbarItems = [ { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: PopupButtonClose } } // ]; viewModel.toolbarItems = toolbarItems; viewModel.PermissionForBrowse = PermissionForBrowse; viewModel.clickOn = clickOn; viewModel.PassWord = PassWord; return viewModel; };