123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372 |
- BemsWebApplication.User = 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 CmUserDataSource = BemsWebApplication.db.createDataSource('CmUser');
- var UserInfo = ko.observableArray();
- var companies = ko.observableArray(),
- departments = ko.observableArray(),
- positions = ko.observableArray(),
- businessFields = ko.observableArray(),
- userGroups = ko.observableArray(),
- tabIndex = ko.observable(0);
- var deferredForSearch = new $.Deferred();
- var searchEmploymentTypes = $SearchView.createObservableCodeNamesOfSelectBoxForSearch($G.EmploymentTypeNames),
- searchEmploymentStatus = $SearchView.createObservableCodeNamesOfSelectBoxForSearch($G.EmploymentStatusNames),
- searchCompanies = ko.observableArray(),
- searchDepartments = ko.observableArray(),
- employmentTypeForSerach = ko.observable(),
- employmentStatusForSerach = ko.observable(),
- companyIdForSerach = ko.observable(),
- departmentIdForSerach = ko.observable();
- var eq = BWA.DataUtil.constructEqualFilter;
- var noteq = BWA.DataUtil.constructNotEqualFilter;
- // 2016 07 06 hcLee 이 주석이 보인다면 복사 잘못했음, user.js는 센터버젼이 최신임....
- function getFilter() {
- if (BWA.LoginManager.isCenterLogin()) {
- return [['SiteId', '=', 0]];
- }
- return [
- eq('SiteId', BWA.UserInfo.SiteId()),
- 'and',
- noteq('UserId', 'admin'),
- ];
- }
- function Encrypt(theText) {
- var output = new String;
- var Temp = new Array();
- var Temp2 = new Array();
- var TextSize = theText.length;
- for (var i = 0; i < TextSize; i++) {
- var rnd = Math.round(Math.random() * 122) + 68;
- Temp[i] = theText.charCodeAt(i) + rnd;
- Temp2[i] = rnd;
- }
- for (i = 0; i < TextSize; i++) {
- output += String.fromCharCode(Temp[i], Temp2[i]);
- }
- return output;
- }
- 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'
- ],
- expand: ['CmPosition', 'CmDepartment', 'CmCompany', 'CmBusinessField', 'CmUserGroup'],
- //filter: getFilter(), // 2016 07 06 hcLee 이 주석이 보인다면 복사 잘못했음, user.js는 센터버젼이 최신임....
- filter: [
- //['UserId', '<>', 'admin']
- eq('SiteId', BWA.UserInfo.SiteId()),
- 'and',
- noteq('UserId', 'admin'),
- ],
- extendOptions: {
- forceOriginalField: true
- }
- },
- /*"export": {
- enabled: true,
- fileName: "사용자정보관리"
- },*/
- 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' }
- ],
- // 2019.04.17 엑셀 출력 기능 추가 ~~~
- "export": {
- enabled: true,
- fileName: '사용자 목록'
- },
- onExporting: function (e) {
- e.component.columnOption($G('number'), "visible", false);
- },
- onExported: function (e) {
- e.component.columnOption($G('number'), "visible", true);
- },
- // ~~~ 2019.04.17 엑셀 출력 기능 추가
- //cellPrepared: function( cellElement, cellInfo ) {
- // if( cellInfo.columnIndex == 5 ) {
- // //cellInfo.value = cellInfo.displayValue = cellInfo.rowIndex + 1;
- // //cellInfo.text = cellInfo.rowIndex + 1;
- // $( cellElement ).text( cellInfo.data.CmCompany_Name() + ' / ' + cellInfo.data.CmDepartment_Name() );
- // }
- //},
- promiseDataInSearchView: deferredForSearch.promise(),
- searchViewItems: [
- { id: 'EmploymentType', ignoreValue: 0, defaultValue: 0, value: employmentTypeForSerach, dataSource: searchEmploymentTypes },
- { id: 'EmploymentStatus', ignoreValue: 0, defaultValue: 1, value: employmentStatusForSerach, dataSource: searchEmploymentStatus, isChecked: true, },
- { id: 'CompanyId', ignoreValue: 0, defaultValue: 0, dataSource: searchCompanies, value: companyIdForSerach, handleChangedValue: handleCompanyChangedValueInSearchView, entityForCheckingUse: 'CmCompany' },
- { id: 'DepartmentId', ignoreValue: 0, defaultValue: 0, withCheckId: 'CompanyId', value: departmentIdForSerach, dataSource: searchDepartments, entityForCheckingUse: 'CmDepartment' },
- { id: 'Name' }],
- popupWidth: 720,
- // hcLee 2016 04 14
- handlePopupButtonEdit: function (dataModel) {
- $("#enddate").dxDateBox({ min: dataModel.StartDate });
- },
- handleViewShown: function () {
- /*
- var dataGrid = $("#gridContainer").dxDataGrid("instance");
- dataGrid.option({
- "export": {
- enabled: true,
- fileName: "사용자정보관리"
- },
- });*/
- //searchViewItems.EmploymentStatus.check(true);
- businessFieldDataSource.load().done(function (dbBusinessFields) {
- businessFields(dbBusinessFields);
- });
- userGroupDataSource.load().done(function (dbUserGroups) {
- userGroups(dbUserGroups);
- });
- companyDataSource.load().done(function (dbCompanies) {
- companies(dbCompanies);
- searchCompanies($SearchView.createArrayOfSelectBox('CompanyId', dbCompanies));
- departments([]);
- searchDepartments(getDefaultDepartmentsForSearch());
- deferredForSearch.resolve();
- //BemsWebApplication.app.currentViewInfo.model.handleSearchInSearchView(); // 2016 09 28
- });
- $("#gridContainer").dxDataGrid({
- paging: {
- pageSize: 18,
- enabled: true
- }
- });
- },
- handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) {
- if (!isNewInPopup()) {
- BWA.DataUtil.setArrayDataSourceFilter(departmentDataSource, 'CompanyId', dataViewModel.CompanyId(), departments);
- }
- else {
- }
- },
- /*
- beforeUpdateDataViewModel: function () {
- var keys = BWA.db.extractKeysObject('CmUser', viewModel.dataModel);
- BWA.db.CmUser.update(keys, viewModel.dataModel.toJS()).done(function (response, responseKey) {
- //if (popup && popup.handleAfterSave) {
- // popup.handleAfterSave(response, responseKey);
- //}
- });
- return 1;
- }, */
- afterUpdateDataViewModel: function (data) {
- if (data.EmploymentStatus() != 1) {
- var user = new BemsWebApplication['CmUserViewModel']();
- user.SiteId = data.SiteId();
- user.UserId = data.UserId();
- var promise = BemsWebApplication.api.post('BemsMonitoringPoint/RemovePatrolGroupUser', user);
- promise.done(function (r) {
- if (r > 0)
- utils.toast.show('데이터 수정 작업이 성공하였습니다. (휴직이나 퇴직으로 변경되어 ( ' + r + ') 건이 순찰조에서 자동으로 삭제 되었습니다)');
- });
- }
- },
- // 2016 09 28 hcLee 사용자의 상태가 휴직이나 퇴직이되는 경우 순찰조에서 삭제한다
- /*
- handleSaveButtonInPopup: function (isInsert) {
- if (isInsert === false) {
- var user = new BemsWebApplication['CmUserViewModel']();
- if (viewModel.dataModel.EmploymentStatus() != 1) {
- //var dataViewModel = new BemsWebApplication['CmUser']();
- //utils.toast.show('휴직이나 퇴직으로 변경된 사용자는 순찰조에서 자동으로 삭제 됩니다', 'error');
- DevExpress.ui.dialog.confirm($G('deleteConfirmMsg'), "삭제").then(function (result) {
- if (result) {
- //handleConfirmDelete();
- user.SiteId = viewModel.dataModel.SiteId();
- user.UserId = viewModel.dataModel.UserId();
- var promise = BemsWebApplication.api.post('BemsMonitoringPoint/RemovePatrolGroupUser', user); 사
- promise.done(function () {
- ;
- });
- }
- });
- }
- }
- },*/
- 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());
- popupVisible(true);
- },
- handlePopupShowing: function (that) {
- positionDataSource.load().done(function (result) {
- positions(result);
- });
- CmUserDataSource.filter([
- ["SiteId", "=", BWA.UserInfo.SiteId()]
- ]);
- CmUserDataSource.load().done(function (result) {
- UserInfo(result);
- });
- },
- // hcLee 2015 12 23
- beforeInsertingDataViewModel: function (dataModel, dbModelId) {
- var dfd = $.Deferred();
- //alert(dataModel.Name());
- var isDuplicated = false;
- for (var i = 0; i < UserInfo().length; i++) {
- if (dataModel.UserId() == UserInfo()[i].UserId()) {
- isDuplicated = true;
- break;
- }
- }
- if (dataModel.UserId() == null || dataModel.Name() == null || dataModel.Passwd() == null ||
- dataModel.CompanyId() == null || dataModel.DepartmentId() == null || dataModel.PositionId() == null || dataModel.BusinessFieldId() == null || dataModel.UserGroupId() == null)
- dfd.resolve(false, '(*) 표시 항목은 필수 입력 사항 입니다!');
- if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.UserId()))
- dfd.resolve(false, '아이디에 공백이 포함되어있습니다. (앞뒤공백 허용안함)');
- if (isDuplicated)
- return dfd.resolve(false, '이미 동일 아이디가 존재합니다.');
- else
- return dfd.resolve(true);
- if (!chekPassword())
- return dfd.resolve(false);
- },
- beforeUpdateDataViewModel: function () {
- //handlePopupButtonSave: function () {
- if (_.isEmpty(viewModel.dataModel.UserId()) || _.isEmpty(viewModel.dataModel.Name()) || _.isEmpty(viewModel.dataModel.Passwd()) ||
- viewModel.dataModel.CompanyId() == null || viewModel.dataModel.DepartmentId() == null || viewModel.dataModel.PositionId() == null ||
- viewModel.dataModel.BusinessFieldId() == null || viewModel.dataModel.UserGroupId() == null) {
- utils.toast.show('(*) 표시 항목은 필수 입력 사항 입니다.', 'error');
- return 0;
- }
- if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.UserId()))
- utils.toast.show(false, '아이디에 공백이 포함되어있습니다. (앞뒤공백 허용안함)', 'error');
- if (chekPassword())
- return 2;
- else
- return 0;
- }
- });
- function chekPassword() {
- var mbrId = viewModel.dataModel.UserId(); // id 값 입력
- var mbrPwd = viewModel.dataModel.Passwd(); // pw 입력
- var check1 = /^(?=.*[a-zA-Z])(?=.*[0-9]).{10,20}$/.test(mbrPwd); //영문,숫자
- var check2 = /^(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{10,20}$/.test(mbrPwd); //영문,특수문자
- var check3 = /^(?=.*[^a-zA-Z0-9])(?=.*[0-9]).{10,20}$/.test(mbrPwd); //특수문자, 숫자
- if (!(check1 || check2 || check3)) {
- utils.toast.show('비밀번호는 10자~20자리의 영문+숫자+특수문자 중 2종류 이상을 조합하여 사용할 수 있습니다.', 'error');
- return false;
- }
- if (mbrPwd.search(mbrId) > -1) {
- utils.toast.show('비밀번호에 아이디가 포함되었습니다.', 'error');
- return false;
- }
- viewModel.dataModel.Passwd(Encrypt(viewModel.dataModel.Passwd()));
- return true;
- }
- function getDefaultDepartmentsForSearch() {
- return $SearchView.createDefaultArray('DepartmentId');
- }
- function handleCompanyChangedValueInSearchView(e) {
- if (e.value === 0) {
- searchDepartments(getDefaultDepartmentsForSearch());
- }
- else {
- BWA.DataUtil.setArrayDataSourceFilter(departmentDataSource, 'CompanyId', e.value, searchDepartments, getDefaultDepartmentsForSearch());
- }
- departmentIdForSerach(0);
- }
- 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;
- return viewModel;
- };
|