1f5f2f9709d4f85ff8793a4ca0e83de19412c996.svn-base 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. BemsWebApplication.Company = function( params, viewInfo ) {
  2. "use strict";
  3. var CompanyInfo = ko.observableArray();
  4. var CmCompanyDataSource = BemsWebApplication.db.createDataSource('CmCompany');
  5. var RowName, RowCompanyId;
  6. var companyTypeDataSource = BemsWebApplication.db.createDataSource( 'CmCompanyType', true );
  7. var companyTypes = ko.observableArray();
  8. var searchCompanyTypes = ko.observableArray();
  9. var companyTypeDeferred = new $.Deferred();
  10. var viewModel = BWA.DataGrid.createViewWithDataGrid( params, viewInfo, 'CmCompany', {
  11. dataSourceOptions: {
  12. select: [ 'SiteId', 'CompanyTypeId', 'CompanyId', 'Name', 'RepresentativeName', 'PhoneNo', 'IsUse', 'CmCompanyType/Name' ],
  13. expand: ["CmCompanyType"],
  14. extendOptions: {
  15. forceOriginalField: true
  16. }
  17. },
  18. columns: [
  19. { dataField: 'CompanyId', caption: '번호', width: '10%', alignment: 'center' , sortOrder: 'desc'},
  20. { dataField: 'CmCompanyType/Name', caption: $G('companyType'), width: '15%', alignment: 'center' },
  21. { dataField: 'Name', caption: $G( 'companyName' ), width: '35%', alignment: 'center' },
  22. { dataField: 'RepresentativeName', caption: $G( 'companyRepresentativeName' ), width: '15%', alignment: 'center' },
  23. { dataField: 'PhoneNo', caption: $G( 'companyPhoneNo' ), width: '15%', alignment: 'center' },
  24. utils.datagrid.columnIsUse( '10%' )
  25. ],
  26. searchViewItems: [{ id: 'CompanyTypeId', ignoreValue: 0, defaultValue: 0, dataSource: searchCompanyTypes }, { id: 'Name' }],
  27. promiseDataInSearchView: companyTypeDeferred.promise(),
  28. handleViewShowing: function (that) {
  29. //2015 11 12 hcLee 필터추가
  30. companyTypeDataSource.filter([
  31. ['SiteId', '=', BWA.UserInfo.SiteId()],
  32. 'and',
  33. ['IsUse', '=', true]
  34. ]);
  35. companyTypeDataSource.load().done( function( result ) {
  36. companyTypes( result );
  37. searchCompanyTypes( [ { CompanyTypeId: 0, Name: $G('selectAll') } ].concat( result ) );
  38. companyTypeDeferred.resolve();
  39. });
  40. },
  41. handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
  42. dataGrid.clearSelection();
  43. viewModel.isNewInPopup(false); // hcLee 2016 02 16 키필드가 콤보로 제공될때 등록시만 보이고 수정시에는 안보기에 하기 위하여 꼭 필요 !!!
  44. var data = clickRow.data;
  45. RowName = data.Name;
  46. RowCompanyId = data.CompanyTypeId;
  47. popupVisible(true);
  48. },
  49. // 이름 중복 방지
  50. handlePopupShowing: function () {
  51. CmCompanyDataSource.filter([
  52. ["SiteId", "=", BWA.UserInfo.SiteId()]
  53. ]);
  54. CmCompanyDataSource.load().done(function (result) {
  55. CompanyInfo(result);
  56. });
  57. },
  58. beforeInsertingDataViewModel: function (dataModel, dbModelId) {
  59. var dfd = $.Deferred();
  60. var isDuplicated = false;
  61. for (var i = 0; i < CompanyInfo().length; i++) {
  62. if (dataModel.Name() == CompanyInfo()[i].Name() && dataModel.CompanyTypeId() == CompanyInfo()[i].CompanyTypeId()) {
  63. isDuplicated = true;
  64. }
  65. }
  66. if (!BWA.DataUtil.isValidInputValue(dataModel.Name()))
  67. return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)');
  68. else {
  69. if (isDuplicated)
  70. return dfd.resolve(false, '이미 동일 정보가 존재합니다 (회사 구분, 회사 명칭 확인 필요)');
  71. else
  72. return dfd.resolve(true);
  73. }
  74. },
  75. beforeUpdateDataViewModel: function () {
  76. var isDuplicated = false;
  77. for (var i = 0; i < CompanyInfo().length; i++) {
  78. if (viewModel.dataModel.Name() == CompanyInfo()[i].Name() && viewModel.dataModel.CompanyTypeId() == CompanyInfo()[i].CompanyTypeId()
  79. && (RowName() != CompanyInfo()[i].Name() || RowCompanyId() != CompanyInfo()[i].CompanyTypeId())) {
  80. isDuplicated = true;
  81. }
  82. }
  83. if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())) {
  84. utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error');
  85. return 0;
  86. }
  87. else {
  88. if (isDuplicated) {
  89. utils.toast.show('이미 동일 이름이 존재합니다 (회사 구분, 회사 명칭 확인 필요).', 'error');
  90. return 0;
  91. }
  92. else
  93. return 2;
  94. }
  95. }
  96. });
  97. var handleSelectBoxCompanyType = function( e ) {
  98. viewModel.dataModel.CompanyTypeId(e.value);
  99. };
  100. viewModel.companyTypeDataSource = companyTypes;
  101. viewModel.searchCompanyTypes = searchCompanyTypes;
  102. viewModel.handleSelectBoxCompanyType = handleSelectBoxCompanyType;
  103. return viewModel;
  104. };