pathColumn;
@@ -72,7 +78,6 @@ public class CompanyCustomerManagerWindowController
return skin;
}
-
/**
* 对所有客户的文件进行重置
*
@@ -108,7 +113,6 @@ public class CompanyCustomerManagerWindowController
dialog.initOwner(table.getScene().getWindow());
dialog.show();
-
CompletableFuture.runAsync(() -> {
Pageable pageRequest = PageRequest.ofSize(50);
while (!canceled.get()) {
@@ -166,5 +170,4 @@ public class CompanyCustomerManagerWindowController
UITools.showTaskDialogAndWait("导出Excel", tasker, null);
}
-
}
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/HomeWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/HomeWindowController.java
index 9497f0b..a83a1ac 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/HomeWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/HomeWindowController.java
@@ -32,7 +32,7 @@ import com.ecep.contract.manager.ds.other.controller.department.DepartmentManage
import com.ecep.contract.manager.ds.other.controller.employee.EmployeeManagerWindowController;
import com.ecep.contract.manager.ds.other.controller.inventory.InventoryManagerWindowController;
import com.ecep.contract.manager.ds.other.controller.permission.EmployeeFunctionsManagerWindowController;
-import com.ecep.contract.manager.ds.other.controller.permission.EmployeeRolesManagerWindowController;
+import com.ecep.contract.manager.ds.other.controller.permission.EmployeeRoleManagerWindowController;
import com.ecep.contract.manager.ds.project.controller.ProjectManagerWindowController;
import com.ecep.contract.manager.ds.vendor.controller.CompanyVendorManagerWindowController;
import com.ecep.contract.manager.ui.BaseController;
@@ -198,7 +198,7 @@ public class HomeWindowController extends BaseController {
}
public void onShowRolesManagerWindowAction(ActionEvent event) {
- showInOwner(EmployeeRolesManagerWindowController.class);
+ showInOwner(EmployeeRoleManagerWindowController.class);
}
public void onShowFunctionManagerWindowAction(ActionEvent event) {
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/employee/EmployeeManagerWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/employee/EmployeeManagerWindowController.java
index 72d6cc9..03c1105 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/employee/EmployeeManagerWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/employee/EmployeeManagerWindowController.java
@@ -11,6 +11,7 @@ import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.util.UITools;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
import javafx.scene.control.CheckBox;
import javafx.scene.control.TableColumn;
import javafx.stage.Stage;
@@ -27,17 +28,29 @@ import java.time.LocalDate;
public class EmployeeManagerWindowController
extends AbstManagerWindowController {
+ @FXML
public TableColumn idColumn;
+ @FXML
public TableColumn accountColumn;
+ @FXML
public TableColumn departmentColumn;
+ @FXML
public TableColumn nameColumn;
+ @FXML
public TableColumn aliasColumn;
+ @FXML
public TableColumn codeColumn;
+ @FXML
public TableColumn emailColumn;
+ @FXML
public TableColumn createdColumn;
+ @FXML
public TableColumn entryDateColumn;
+ @FXML
public TableColumn leaveDateColumn;
+ @FXML
public TableColumn activeColumn;
+ @FXML
public CheckBox activeCheckBox;
@Override
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/employee/EmployeeTabSkinAuthBind.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/employee/EmployeeTabSkinAuthBind.java
index 22912e3..a488a75 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/employee/EmployeeTabSkinAuthBind.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/employee/EmployeeTabSkinAuthBind.java
@@ -19,8 +19,7 @@ import java.util.List;
@FxmlPath("/ui/employee/employee-auth-bind.fxml")
public class EmployeeTabSkinAuthBind
- extends AbstEmployeeTableTabSkin
- implements EditableEntityTableTabSkin {
+ extends AbstEmployeeTableTabSkin {
public TableColumn idColumn;
public TableColumn ipColumn;
public TableColumn macColumn;
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/inventory/InventoryManagerWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/inventory/InventoryManagerWindowController.java
index 51c8295..c64d26e 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/inventory/InventoryManagerWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/inventory/InventoryManagerWindowController.java
@@ -17,6 +17,7 @@ import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.util.UITools;
import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.stage.Stage;
@@ -27,18 +28,31 @@ import javafx.stage.Stage;
public class InventoryManagerWindowController
extends AbstManagerWindowController {
+ @FXML
public TableColumn idColumn;
+ @FXML
public TableColumn nameColumn;
+ @FXML
public TableColumn codeColumn;
+ @FXML
public TableColumn catalogColumn;
+ @FXML
public TableColumn specificationColumn;
+ @FXML
public TableColumn unitColumn;
+ @FXML
public TableColumn purchaseTaxRateColumn;
+ @FXML
public TableColumn purchasePriceColumn;
+ @FXML
public TableColumn saleTaxRateColumn;
+ @FXML
public TableColumn salePriceColumn;
+ @FXML
public TableColumn createTimeColumn;
+ @FXML
public TableColumn updateDateColumn;
+ @FXML
public TableColumn descriptionColumn;
@Autowired
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/inventory/InventoryWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/inventory/InventoryWindowController.java
index 18f11c4..bcb9dd5 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/inventory/InventoryWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/inventory/InventoryWindowController.java
@@ -6,6 +6,7 @@ import com.ecep.contract.manager.ds.other.vo.InventoryViewModel;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
import javafx.beans.binding.Bindings;
+import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.stage.WindowEvent;
@@ -19,44 +20,81 @@ import org.springframework.stereotype.Component;
@Component
@FxmlPath("/ui/inventory/inventory.fxml")
public class InventoryWindowController extends AbstEntityController {
+ @FXML
public BorderPane root;
+ @FXML
public TabPane tabPane;
+ @FXML
public Tab baseInfoTab;
+ @FXML
public Tab historyPriceTab;
+ @FXML
public Tab contractsTab;
+ @FXML
public TextField nameField;
+ @FXML
public CheckBox nameLockField;
+ @FXML
public TextField catalogField;
+ @FXML
public TextField unitField;
+ @FXML
public TextField codeField;
+ @FXML
public TextField specificationField;
+ @FXML
public CheckBox specificationLockField;
+ @FXML
public TextField purchasePriceField;
+ @FXML
public TextField purchaseTaxRateField;
+ @FXML
public TextField purchaseTaxPriceField;
+ @FXML
public TextField creatorField;
+ @FXML
public TextField createTimeField;
+ @FXML
public TextField updaterField;
+ @FXML
public TextField updateDateField;
+ @FXML
public TextField saleTaxRateField;
+ @FXML
public TextField salePriceField;
+ @FXML
public TextField saleTaxPriceField;
+ @FXML
public TextArea descriptionField;
+ @FXML
public Button syncBtn;
+ @FXML
public TextField weightUnitField;
+ @FXML
public TextField sizeUnitField;
+ @FXML
public TextField volumeUnitField;
+ @FXML
public TextField weightField;
+ @FXML
public TextField packagedWeightField;
+ @FXML
public TextField sizeLengthField;
+ @FXML
public TextField sizeWidthField;
+ @FXML
public TextField sizeHeightField;
+ @FXML
public TextField volumeField;
+ @FXML
public TextField packagedSizeLengthField;
+ @FXML
public TextField packagedSizeWidthField;
+ @FXML
public TextField packagedSizeHeightField;
+ @FXML
public TextField packagedVolumeField;
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/AbstEmployeeRoleBasedTabSkin.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/AbstEmployeeRoleBasedTabSkin.java
index 731581b..caedc3c 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/AbstEmployeeRoleBasedTabSkin.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/AbstEmployeeRoleBasedTabSkin.java
@@ -6,11 +6,9 @@ import com.ecep.contract.manager.ds.other.service.FunctionService;
import com.ecep.contract.manager.ds.other.service.PermissionService;
import com.ecep.contract.manager.ds.other.vo.EmployeeRoleViewModel;
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
-import com.ecep.contract.manager.ui.TabSkin;
public abstract class AbstEmployeeRoleBasedTabSkin
- extends AbstEntityBasedTabSkin
- implements TabSkin {
+ extends AbstEntityBasedTabSkin {
private EmployeeRoleService roleService;
private FunctionService functionService;
@@ -38,5 +36,4 @@ public abstract class AbstEmployeeRoleBasedTabSkin
return controller.permissionService;
}
-
}
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeFunctionsManagerWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeFunctionsManagerWindowController.java
index 02eb47c..ba59fcb 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeFunctionsManagerWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeFunctionsManagerWindowController.java
@@ -9,6 +9,7 @@ import com.ecep.contract.manager.ui.AbstManagerWindowController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.ViewModelService;
import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
@@ -32,16 +33,18 @@ public class EmployeeFunctionsManagerWindowController
@Autowired
FunctionService functionService;
+ @FXML
public TableColumn idColumn;
+ @FXML
public TableColumn nameColumn;
+ @FXML
public TableColumn keyColumn;
-
-
- public TableView permissionTable;
- public TableColumn permissionTable_idColumn;
- public TableColumn permissionTable_nameColumn;
- public TableColumn permissionTable_keyColumn;
- public TableColumn permissionTable_descriptionColumn;
+ @FXML
+ public TableColumn controllerColumn;
+ @FXML
+ public TableColumn iconColumn;
+ @FXML
+ public TableColumn descriptionColumn;
@Override
public void show(Stage stage) {
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerSkin.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerSkin.java
index ff69310..7dc2f7c 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerSkin.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerSkin.java
@@ -11,13 +11,13 @@ import lombok.Setter;
import org.springframework.data.jpa.domain.Specification;
public class EmployeeRoleManagerSkin
- extends AbstEntityManagerSkin
+ extends AbstEntityManagerSkin
implements ManagerSkin, EditableEntityTableTabSkin {
@Setter
private PermissionService permissionService;
- public EmployeeRoleManagerSkin(EmployeeRolesManagerWindowController controller) {
+ public EmployeeRoleManagerSkin(EmployeeRoleManagerWindowController controller) {
super(controller);
}
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRolesManagerWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerWindowController.java
similarity index 90%
rename from src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRolesManagerWindowController.java
rename to src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerWindowController.java
index 37ec708..3f513cb 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRolesManagerWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerWindowController.java
@@ -1,16 +1,5 @@
package com.ecep.contract.manager.ds.other.controller.permission;
-import com.ecep.contract.manager.ds.other.model.EmployeeRole;
-import com.ecep.contract.manager.ds.other.service.EmployeeRoleService;
-import com.ecep.contract.manager.ds.other.service.PermissionService;
-import com.ecep.contract.manager.ds.other.vo.EmployeeRoleViewModel;
-import com.ecep.contract.manager.ui.AbstEntityBasedController;
-import com.ecep.contract.manager.ui.AbstManagerWindowController;
-import com.ecep.contract.manager.ui.FxmlPath;
-import com.ecep.contract.manager.ui.ViewModelService;
-import javafx.event.ActionEvent;
-import javafx.scene.control.TableColumn;
-import javafx.stage.Stage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -18,21 +7,30 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
+import com.ecep.contract.manager.ds.other.model.EmployeeRole;
+import com.ecep.contract.manager.ds.other.service.EmployeeRoleService;
+import com.ecep.contract.manager.ds.other.service.PermissionService;
+import com.ecep.contract.manager.ds.other.vo.EmployeeRoleViewModel;
+import com.ecep.contract.manager.ui.AbstManagerWindowController;
+import com.ecep.contract.manager.ui.FxmlPath;
+
+import javafx.event.ActionEvent;
+import javafx.scene.control.TableColumn;
+import javafx.stage.Stage;
+
@Lazy
@Scope("prototype")
@Component
@FxmlPath("/ui/employee/roles-manager.fxml")
-public class EmployeeRolesManagerWindowController
+public class EmployeeRoleManagerWindowController
extends AbstManagerWindowController {
- private static final Logger logger = LoggerFactory.getLogger(EmployeeRolesManagerWindowController.class);
-
+ private static final Logger logger = LoggerFactory.getLogger(EmployeeRoleManagerWindowController.class);
@Autowired
private PermissionService permissionService;
@Autowired
EmployeeRoleService employeeRoleService;
-
public TableColumn idColumn;
public TableColumn codeColumn;
public TableColumn nameColumn;
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleFunctionsTabSkin.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleTabSkinFunctions.java
similarity index 94%
rename from src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleFunctionsTabSkin.java
rename to src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleTabSkinFunctions.java
index dd2f163..40fa63b 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleFunctionsTabSkin.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleTabSkinFunctions.java
@@ -1,8 +1,14 @@
package com.ecep.contract.manager.ds.other.controller.permission;
+import java.util.List;
+
+import org.controlsfx.control.ListSelectionView;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+
import com.ecep.contract.manager.ds.other.model.EmployeeRole;
import com.ecep.contract.manager.ds.other.model.Function;
-import com.ecep.contract.manager.ui.TabSkin;
+
import javafx.beans.property.SimpleBooleanProperty;
import javafx.collections.ListChangeListener;
import javafx.event.ActionEvent;
@@ -10,18 +16,13 @@ import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.ListCell;
import javafx.scene.control.Tab;
-import org.controlsfx.control.ListSelectionView;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.domain.Specification;
-import java.util.List;
-
-public class EmployeeRoleFunctionsTabSkin extends AbstEmployeeRoleBasedTabSkin implements TabSkin {
+public class EmployeeRoleTabSkinFunctions extends AbstEmployeeRoleBasedTabSkin {
private final SimpleBooleanProperty changed = new SimpleBooleanProperty(false);
private ListSelectionView functionsField;
- public EmployeeRoleFunctionsTabSkin(EmployeeRoleWindowController controller) {
+ public EmployeeRoleTabSkinFunctions(EmployeeRoleWindowController controller) {
super(controller);
}
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleWindowController.java
index d344523..62e2bed 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleWindowController.java
@@ -83,7 +83,7 @@ public class EmployeeRoleWindowController extends AbstEntityController new EmployeeRoleTabSkinBase(this));
- registerTabSkin(functionsTab, tab -> new EmployeeRoleFunctionsTabSkin(this));
+ registerTabSkin(functionsTab, tab -> new EmployeeRoleTabSkinFunctions(this));
}
@Override
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionManagerSkin.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionManagerSkin.java
index e078159..2310e86 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionManagerSkin.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionManagerSkin.java
@@ -3,26 +3,15 @@ package com.ecep.contract.manager.ds.other.controller.permission;
import com.ecep.contract.manager.ds.other.model.Function;
import com.ecep.contract.manager.ds.other.service.FunctionService;
import com.ecep.contract.manager.ds.other.service.PermissionService;
-import com.ecep.contract.manager.ds.other.vo.BaseViewModel;
import com.ecep.contract.manager.ds.other.vo.FunctionViewModel;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin;
-import com.ecep.contract.manager.ui.EditableEntityTableTabSkin;
-import com.ecep.contract.manager.ui.ManagerSkin;
-import com.ecep.contract.manager.util.TableViewUtils;
+
import javafx.scene.control.TableColumn;
import javafx.scene.control.cell.TextFieldTableCell;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Sort;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.util.StringUtils;
-
-import java.util.List;
public class FunctionManagerSkin
- extends AbstEntityManagerSkin
- implements ManagerSkin, EditableEntityTableTabSkin {
-
- private PermissionManagerSkin permissionManagerSkin;
+ extends
+ AbstEntityManagerSkin {
public FunctionManagerSkin(EmployeeFunctionsManagerWindowController controller) {
super(controller);
@@ -30,16 +19,6 @@ public class FunctionManagerSkin
@Override
public void initializeTable() {
- initializeFunctionTable();
- if (permissionManagerSkin == null) {
- permissionManagerSkin = new PermissionManagerSkin(controller);
- }
- permissionManagerSkin.install();
-
- }
-
- private void initializeFunctionTable() {
- getTableView().setEditable(true);
controller.idColumn.setCellValueFactory(param -> param.getValue().getId());
controller.nameColumn.setCellValueFactory(param -> param.getValue().getName());
@@ -50,10 +29,17 @@ public class FunctionManagerSkin
controller.keyColumn.setCellFactory(TextFieldTableCell.forTableColumn());
controller.keyColumn.setOnEditCommit(this::onKeyColumnEditCommit);
- getTableView().getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
- permissionManagerSkin.setViewModel(newValue);
- permissionManagerSkin.loadTableDataSet();
- });
+ controller.controllerColumn.setCellValueFactory(param -> param.getValue().getController());
+ controller.controllerColumn.setCellFactory(TextFieldTableCell.forTableColumn());
+ controller.controllerColumn.setOnEditCommit(this::onControllerColumnEditCommit);
+
+ controller.iconColumn.setCellValueFactory(param -> param.getValue().getIcon());
+ controller.iconColumn.setCellFactory(TextFieldTableCell.forTableColumn());
+ controller.iconColumn.setOnEditCommit(this::onIconColumnEditCommit);
+
+ controller.descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription());
+ controller.descriptionColumn.setCellFactory(TextFieldTableCell.forTableColumn());
+ controller.descriptionColumn.setOnEditCommit(this::onDescriptionColumnEditCommit);
}
private void onNameColumnEditCommit(TableColumn.CellEditEvent event) {
@@ -64,12 +50,21 @@ public class FunctionManagerSkin
acceptCellEditEvent(event, FunctionViewModel::getKey);
}
+ private void onControllerColumnEditCommit(TableColumn.CellEditEvent event) {
+ acceptCellEditEvent(event, FunctionViewModel::getController);
+ }
+
+ private void onIconColumnEditCommit(TableColumn.CellEditEvent event) {
+ acceptCellEditEvent(event, FunctionViewModel::getIcon);
+ }
+
+ private void onDescriptionColumnEditCommit(TableColumn.CellEditEvent event) {
+ acceptCellEditEvent(event, FunctionViewModel::getDescription);
+ }
+
@Override
- public void dispose() {
- if (permissionManagerSkin != null) {
- permissionManagerSkin.dispose();
- }
- super.dispose();
+ protected void onTableRowDoubleClickedAction(FunctionViewModel item) {
+ showInOwner(FunctionWindowController.class, item);
}
protected PermissionService getPermissionService() {
@@ -80,5 +75,4 @@ public class FunctionManagerSkin
return controller.getViewModelService();
}
-
}
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionTabSkinBase.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionTabSkinBase.java
new file mode 100644
index 0000000..4b791d3
--- /dev/null
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionTabSkinBase.java
@@ -0,0 +1,30 @@
+package com.ecep.contract.manager.ds.other.controller.permission;
+
+import com.ecep.contract.manager.ds.other.model.Function;
+import com.ecep.contract.manager.ds.other.vo.FunctionViewModel;
+import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
+
+import javafx.scene.control.Tab;
+
+public class FunctionTabSkinBase
+ extends AbstEntityBasedTabSkin {
+
+ public FunctionTabSkinBase(FunctionWindowController controller) {
+ super(controller);
+ }
+
+ @Override
+ public Tab getTab() {
+ return controller.baseInfoTab;
+ }
+
+ @Override
+ public void initializeTab() {
+ // 绑定UI元素与viewModel的属性
+ controller.nameField.textProperty().bindBidirectional(viewModel.getName());
+ controller.keyField.textProperty().bindBidirectional(viewModel.getKey());
+ controller.controllerField.textProperty().bindBidirectional(viewModel.getController());
+ controller.iconField.textProperty().bindBidirectional(viewModel.getIcon());
+ controller.descriptionField.textProperty().bindBidirectional(viewModel.getDescription());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionTabSkinPermission.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionTabSkinPermission.java
new file mode 100644
index 0000000..6b68bb2
--- /dev/null
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionTabSkinPermission.java
@@ -0,0 +1,66 @@
+package com.ecep.contract.manager.ds.other.controller.permission;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.jpa.domain.Specification;
+
+import com.ecep.contract.manager.ds.other.model.Function;
+import com.ecep.contract.manager.ds.other.model.Permission;
+import com.ecep.contract.manager.ds.other.service.PermissionService;
+import com.ecep.contract.manager.ds.other.vo.FunctionViewModel;
+import com.ecep.contract.manager.ds.other.vo.PermissionViewModel;
+import com.ecep.contract.manager.ui.AbstEntityTableTabSkin;
+import com.ecep.contract.manager.ui.FxmlPath;
+import com.ecep.contract.manager.util.SpecificationUtils;
+
+import javafx.fxml.FXML;
+import javafx.scene.control.Tab;
+import javafx.scene.control.TableColumn;
+
+@FxmlPath("/ui/employee/function-tab-permission.fxml")
+public class FunctionTabSkinPermission
+ extends
+ AbstEntityTableTabSkin {
+
+ @FXML
+ public TableColumn idColumn;
+ @FXML
+ public TableColumn nameColumn;
+ @FXML
+ public TableColumn keyColumn;
+ @FXML
+ public TableColumn descriptionColumn;
+
+ @Autowired
+ private PermissionService permissionService;
+
+ public FunctionTabSkinPermission(FunctionWindowController controller) {
+ super(controller);
+ }
+
+ @Override
+ public Tab getTab() {
+ return controller.permissionTab;
+ }
+
+ @Override
+ public PermissionService getViewModelService() {
+ return permissionService;
+ }
+
+ @Override
+ public void initializeTable() {
+ super.initializeTable();
+ idColumn.setCellValueFactory(param -> param.getValue().getId());
+ nameColumn.setCellValueFactory(param -> param.getValue().getName());
+ keyColumn.setCellValueFactory(param -> param.getValue().getKey());
+ // descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription());
+ }
+
+ @Override
+ public Specification getSpecification(Function parent) {
+ return SpecificationUtils.and(getSpecification(), (root, query, criteriaBuilder) -> {
+ return criteriaBuilder.equal(root.get("function"), parent);
+ });
+ }
+
+}
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionWindowController.java
new file mode 100644
index 0000000..8825b24
--- /dev/null
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionWindowController.java
@@ -0,0 +1,81 @@
+package com.ecep.contract.manager.ds.other.controller.permission;
+
+import com.ecep.contract.manager.ds.other.model.Function;
+import com.ecep.contract.manager.ds.other.service.FunctionService;
+import com.ecep.contract.manager.ds.other.vo.FunctionViewModel;
+import com.ecep.contract.manager.ui.AbstEntityController;
+import com.ecep.contract.manager.ui.FxmlPath;
+import javafx.scene.control.*;
+import javafx.scene.layout.BorderPane;
+import javafx.fxml.FXML;
+import javafx.stage.Window;
+import javafx.stage.WindowEvent;
+import lombok.Getter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+@Lazy
+@Scope("prototype")
+@Component
+@FxmlPath("/ui/employee/function.fxml")
+public class FunctionWindowController extends AbstEntityController {
+ private static final Logger logger = LoggerFactory.getLogger(FunctionWindowController.class);
+
+ /**
+ * 显示界面
+ */
+ public static void show(FunctionViewModel viewModel, Window window) {
+ show(FunctionWindowController.class, viewModel, window);
+ }
+
+ @FXML
+ public BorderPane root;
+ @FXML
+ public TabPane tabPane;
+ @FXML
+ public Tab baseInfoTab;
+ @FXML
+ public Tab permissionTab;
+ @FXML
+ public TextField nameField;
+ @FXML
+ public TextField keyField;
+ @FXML
+ public TextField controllerField;
+ @FXML
+ public TextField iconField;
+ @FXML
+ public TextField descriptionField;
+ @FXML
+ public Label versionLabel;
+
+ public static void show(Function function, Window owner) {
+ FunctionViewModel model = FunctionViewModel.from(function);
+ show(model, owner);
+ }
+
+ @Autowired
+ @Getter
+ FunctionService functionService;
+
+ @Override
+ public void onShown(WindowEvent windowEvent) {
+ super.onShown(windowEvent);
+ getTitle().bind(viewModel.getName().map(name -> "[" + viewModel.getId().get() + "] " + name + " 功能详情"));
+ }
+
+ @Override
+ protected void registerTabSkins() {
+ registerTabSkin(baseInfoTab, tab -> new FunctionTabSkinBase(this));
+ registerTabSkin(permissionTab, tab -> new FunctionTabSkinPermission(this));
+ }
+
+ @Override
+ public FunctionService getViewModelService() {
+ return functionService;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/PermissionManagerSkin.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/PermissionManagerSkin.java
index ba5507e..856b099 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/PermissionManagerSkin.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/PermissionManagerSkin.java
@@ -60,7 +60,6 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin param.getValue().getId());
- controller.permissionTable_idColumn.setEditable(false);
-
- controller.permissionTable_nameColumn.setCellValueFactory(param -> param.getValue().getName());
- controller.permissionTable_nameColumn.setCellFactory(TextFieldTableCell.forTableColumn());
- controller.permissionTable_nameColumn.setOnEditCommit(this::onNameColumnEditCommitAction);
-
- controller.permissionTable_keyColumn.setCellValueFactory(param -> param.getValue().getKey());
- controller.permissionTable_keyColumn.setCellFactory(TextFieldTableCell.forTableColumn());
- controller.permissionTable_keyColumn.setOnEditCommit(this::onKeyColumnEditCommitAction);
-
// controller.permissionTable_descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription());
// controller.permissionTable_descriptionColumn.setCellFactory(TextFieldTableCell.forTableColumn());
// controller.permissionTable_descriptionColumn.setOnEditCommit(this::onSignMethodTableDescriptionColumnEditCommitAction);
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/model/Function.java b/src/main/java/com/ecep/contract/manager/ds/other/model/Function.java
index 04927ff..4560418 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/model/Function.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/model/Function.java
@@ -22,4 +22,13 @@ public class Function implements IdentityEntity, NamedEntity {
@Column(name = "IS_ACTIVE")
private boolean active;
+
+ @Column(name = "CONTROLLER", columnDefinition = "VARCHAR(255)")
+ private String controller;
+
+ @Column(name = "ICON", columnDefinition = "VARCHAR(255)")
+ private String icon;
+
+ @Column(name = "DESCRIPTION", columnDefinition = "VARCHAR(255)")
+ private String description;
}
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/service/FunctionService.java b/src/main/java/com/ecep/contract/manager/ds/other/service/FunctionService.java
index 5ac2be5..6323a0d 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/service/FunctionService.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/service/FunctionService.java
@@ -1,9 +1,5 @@
package com.ecep.contract.manager.ds.other.service;
-import com.ecep.contract.manager.ds.other.model.Function;
-import com.ecep.contract.manager.ds.other.repository.FunctionRepository;
-import com.ecep.contract.manager.ds.other.vo.FunctionViewModel;
-import com.ecep.contract.manager.ui.ViewModelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
@@ -16,6 +12,11 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
+import com.ecep.contract.manager.ds.other.model.Function;
+import com.ecep.contract.manager.ds.other.repository.FunctionRepository;
+import com.ecep.contract.manager.ds.other.vo.FunctionViewModel;
+import com.ecep.contract.manager.ui.ViewModelService;
+
@Lazy
@Service
@CacheConfig(cacheNames = "function")
@@ -24,29 +25,26 @@ public class FunctionService implements ViewModelService {
return builder.or(
builder.like(root.get("key"), "%" + searchText + "%"),
- builder.like(root.get("name"), "%" + searchText + "%")
+ builder.like(root.get("name"), "%" + searchText + "%"),
+ builder.like(root.get("controller"), "%" + searchText + "%"),
+ builder.like(root.get("icon"), "%" + searchText + "%")
);
};
}
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/vo/FunctionViewModel.java b/src/main/java/com/ecep/contract/manager/ds/other/vo/FunctionViewModel.java
index f15009c..b3b82a6 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/vo/FunctionViewModel.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/vo/FunctionViewModel.java
@@ -1,18 +1,21 @@
package com.ecep.contract.manager.ds.other.vo;
+import java.util.Objects;
+
import com.ecep.contract.manager.ds.other.model.Function;
-import javafx.beans.property.SimpleIntegerProperty;
+
import javafx.beans.property.SimpleStringProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import java.util.Objects;
-
@Data
@EqualsAndHashCode(callSuper = false)
public class FunctionViewModel extends IdentityViewModel {
private SimpleStringProperty name = new SimpleStringProperty();
private SimpleStringProperty key = new SimpleStringProperty();
+ private SimpleStringProperty controller = new SimpleStringProperty();
+ private SimpleStringProperty icon = new SimpleStringProperty();
+ private SimpleStringProperty description = new SimpleStringProperty();
public static FunctionViewModel from(Function v) {
FunctionViewModel model = new FunctionViewModel();
@@ -26,6 +29,9 @@ public class FunctionViewModel extends IdentityViewModel {
super.updateFrom(v);
getName().set(v.getName());
getKey().set(v.getKey());
+ getController().set(v.getController());
+ getIcon().set(v.getIcon());
+ getDescription().set(v.getDescription());
}
@Override
@@ -39,6 +45,18 @@ public class FunctionViewModel extends IdentityViewModel {
v.setKey(key.get());
modified = true;
}
+ if (!Objects.equals(controller.get(), v.getController())) {
+ v.setController(controller.get());
+ modified = true;
+ }
+ if (!Objects.equals(icon.get(), v.getIcon())) {
+ v.setIcon(icon.get());
+ modified = true;
+ }
+ if (!Objects.equals(description.get(), v.getDescription())) {
+ v.setDescription(description.get());
+ modified = true;
+ }
return modified;
}
}
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/vo/PermissionViewModel.java b/src/main/java/com/ecep/contract/manager/ds/other/vo/PermissionViewModel.java
index 43f8f7d..db147a4 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/vo/PermissionViewModel.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/vo/PermissionViewModel.java
@@ -1,15 +1,15 @@
package com.ecep.contract.manager.ds.other.vo;
+import java.util.Objects;
+
import com.ecep.contract.manager.ds.other.model.Function;
import com.ecep.contract.manager.ds.other.model.Permission;
-import javafx.beans.property.SimpleIntegerProperty;
+
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import java.util.Objects;
-
@Data
@EqualsAndHashCode(callSuper = false)
public class PermissionViewModel extends IdentityViewModel {
diff --git a/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectManagerSkin.java b/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectManagerSkin.java
index 443fa30..8da3c16 100644
--- a/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectManagerSkin.java
+++ b/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectManagerSkin.java
@@ -1,7 +1,10 @@
package com.ecep.contract.manager.ds.project.controller;
-import com.ecep.contract.manager.SpringApp;
-import com.ecep.contract.manager.ds.company.CompanyStringConverter;
+import org.springframework.data.jpa.domain.Specification;
+
+import com.ecep.contract.manager.ds.company.controller.CompanyTableCell;
+import com.ecep.contract.manager.ds.company.model.Company;
+import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.other.EntityStringConverter;
import com.ecep.contract.manager.ds.project.model.ProductType;
import com.ecep.contract.manager.ds.project.model.Project;
@@ -17,6 +20,7 @@ import com.ecep.contract.manager.ui.BaseController;
import com.ecep.contract.manager.ui.ComboBoxUtils;
import com.ecep.contract.manager.ui.ManagerSkin;
import com.ecep.contract.manager.util.SpecificationUtils;
+
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.scene.control.TableColumn;
@@ -24,13 +28,12 @@ import javafx.scene.control.cell.CheckBoxTableCell;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.util.converter.CurrencyStringConverter;
import lombok.Setter;
-import org.springframework.data.jpa.domain.Specification;
public class ProjectManagerSkin
extends AbstEntityManagerSkin
implements ManagerSkin {
@Setter
- private ProjectService projectService;
+ private CompanyService companyService;
@Setter
private ProjectTypeService projectTypeService;
@Setter
@@ -44,10 +47,14 @@ public class ProjectManagerSkin
}
public ProjectService getProjectService() {
- if (projectService == null) {
- projectService = getBean(ProjectService.class);
+ return controller.getViewModelService();
+ }
+
+ public CompanyService getCompanyService(){
+ if (companyService == null) {
+ companyService = getBean(CompanyService.class);
}
- return projectService;
+ return companyService;
}
public SaleTypeService getSaleTypeService() {
@@ -116,9 +123,9 @@ public class ProjectManagerSkin
}
- private void initializeCustomerColumn(TableColumn column) {
- CompanyStringConverter converter = SpringApp.getBean(CompanyStringConverter.class);
- column.setCellValueFactory(param -> param.getValue().getCustomer().map(converter::toString));
+ private void initializeCustomerColumn(TableColumn column) {
+ column.setCellValueFactory(param -> param.getValue().getCustomer());
+ column.setCellFactory(param-> new CompanyTableCell<>(getCompanyService()));
}
private void initializeProductTypeColumn(TableColumn column) {
diff --git a/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectManagerWindowController.java b/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectManagerWindowController.java
index 90e1ef7..e5c7aec 100644
--- a/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectManagerWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectManagerWindowController.java
@@ -1,6 +1,7 @@
package com.ecep.contract.manager.ds.project.controller;
+import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.project.controller.industry.ProjectIndustryManagerWindowController;
import com.ecep.contract.manager.ds.project.controller.product_type.ProductTypeManagerWindowController;
import com.ecep.contract.manager.ds.project.controller.project_type.ProjectTypeManagerWindowController;
@@ -45,7 +46,7 @@ public class ProjectManagerWindowController
public TableColumn projectTypeColumn;
public TableColumn productTypeColumn;
public TableColumn createdColumn;
- public TableColumn customerColumn;
+ public TableColumn customerColumn;
public TableColumn useBidColumn;
public TableColumn useOfferColumn;
public TableColumn amountColumn;
@@ -67,9 +68,7 @@ public class ProjectManagerWindowController
@Override
protected ProjectManagerSkin createDefaultSkin() {
- ProjectManagerSkin skin = new ProjectManagerSkin(this);
- skin.setProjectService(projectService);
- return skin;
+ return new ProjectManagerSkin(this);
}
diff --git a/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectTabSkinCustomerSatisfactionSurvey.java b/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectTabSkinCustomerSatisfactionSurvey.java
index be91424..9a41759 100644
--- a/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectTabSkinCustomerSatisfactionSurvey.java
+++ b/src/main/java/com/ecep/contract/manager/ds/project/controller/ProjectTabSkinCustomerSatisfactionSurvey.java
@@ -61,7 +61,6 @@ public class ProjectTabSkinCustomerSatisfactionSurvey
@Setter
private CompanyCustomerFileService customerFileService;
-
public ProjectTabSkinCustomerSatisfactionSurvey(ProjectWindowController controller) {
super(controller);
}
@@ -79,12 +78,11 @@ public class ProjectTabSkinCustomerSatisfactionSurvey
public CompletableFuture> refresh() {
CompletableFuture> future = new CompletableFuture<>();
runAsync(() -> {
- try {
- loadTableDataSet();
- future.complete(null);
- } catch (Exception e) {
- future.completeExceptionally(e);
- }
+ loadTableDataSet();
+ future.complete(null);
+ }).exceptionally(ex -> {
+ future.completeExceptionally(ex);
+ return null;
});
return future;
}
@@ -125,7 +123,6 @@ public class ProjectTabSkinCustomerSatisfactionSurvey
showInOwner(CustomerSatisfactionSurveyWindowController.class, item);
}
-
private CustomerSatisfactionSurveyService getCustomerSatisfactionSurveyService() {
if (satisfactionSurveyService == null) {
satisfactionSurveyService = getBean(CustomerSatisfactionSurveyService.class);
@@ -175,7 +172,8 @@ public class ProjectTabSkinCustomerSatisfactionSurvey
return customerFileService;
}
- private static class EvaluationFileTableCell extends TableCell {
+ private static class EvaluationFileTableCell
+ extends TableCell {
private CompanyCustomerFileService fileService;
public CompanyCustomerFileService getFileService() {
diff --git a/src/main/java/com/ecep/contract/manager/ds/project/controller/quotation/ProjectQuotationWindowController.java b/src/main/java/com/ecep/contract/manager/ds/project/controller/quotation/ProjectQuotationWindowController.java
index 5c1318b..229c85a 100644
--- a/src/main/java/com/ecep/contract/manager/ds/project/controller/quotation/ProjectQuotationWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/project/controller/quotation/ProjectQuotationWindowController.java
@@ -9,6 +9,7 @@ import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.util.UITools;
import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
@@ -25,29 +26,50 @@ import org.springframework.stereotype.Component;
@FxmlPath("/ui/project/project-quotation.fxml")
public class ProjectQuotationWindowController
extends AbstEntityController {
+ @FXML
public BorderPane root;
+ @FXML
public Tab baseInfoTab;
+ @FXML
public Button importExcelBtn;
+ @FXML
public Button exportExcelBtn;
+ @FXML
public TextField applicantField;
+ @FXML
public TextField applyTimeField;
+ @FXML
public TextField authorizerField;
+ @FXML
public TextField authorizationTimeField;
+ @FXML
public HBox levelGroup;
+ @FXML
public RadioButton good_radio_btn;
+ @FXML
public RadioButton bad_radio_btn;
+ @FXML
public RadioButton poor_radio_btn;
+ @FXML
public CheckBox standardPayWayField;
+ @FXML
public TextField noStandardPayWayTextField;
+ @FXML
public TextField amountField;
+ @FXML
public TextField evaluationFileField;
+ @FXML
public Button evaluationFileBtn;
+ @FXML
public TextField authorizationFileField;
+ @FXML
public Button openFileBtn;
+ @FXML
public Button changeFileBtn;
+ @FXML
public TextArea descriptionField;
diff --git a/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorManagerSkin.java b/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorManagerSkin.java
index da89b76..433adea 100644
--- a/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorManagerSkin.java
+++ b/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorManagerSkin.java
@@ -1,5 +1,14 @@
package com.ecep.contract.manager.ds.vendor.controller;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.hibernate.Hibernate;
+import org.springframework.data.jpa.domain.Specification;
+
+import com.ecep.contract.manager.ds.company.controller.CompanyTableCell;
+import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.vendor.model.CompanyVendor;
import com.ecep.contract.manager.ds.vendor.model.VendorCatalog;
@@ -10,24 +19,17 @@ import com.ecep.contract.manager.ui.AbstEntityManagerSkin;
import com.ecep.contract.manager.ui.ComboBoxUtils;
import com.ecep.contract.manager.ui.ManagerSkin;
import com.ecep.contract.manager.util.MyDateTimeUtils;
-import com.ecep.contract.manager.util.MyStringUtils;
import com.ecep.contract.manager.util.SpecificationUtils;
+
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleObjectProperty;
+import javafx.beans.property.SimpleStringProperty;
import lombok.Setter;
-import org.hibernate.Hibernate;
-import org.springframework.data.domain.Page;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.util.StringUtils;
-
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
public class CompanyVendorManagerSkin
- extends AbstEntityManagerSkin
- implements ManagerSkin {
+ extends
+ AbstEntityManagerSkin {
@Setter
private CompanyService companyService;
@@ -66,7 +68,8 @@ public class CompanyVendorManagerSkin
@Override
public void initializeTable() {
- List vendorTypeLocals = getCompanyVendorService().findAllTypes(controller.getLocale().toLanguageTag());
+ List vendorTypeLocals = getCompanyVendorService()
+ .findAllTypes(controller.getLocale().toLanguageTag());
ComboBoxUtils.initialComboBox(controller.typeSelector, vendorTypeLocals, true);
controller.typeSelector.valueProperty().addListener((observable, oldValue, newValue) -> {
loadTableDataSet(true);
@@ -75,8 +78,9 @@ public class CompanyVendorManagerSkin
controller.idColumn.setCellValueFactory(param -> param.getValue().getId());
controller.codeColumn.setCellValueFactory(param -> param.getValue().getCode());
+ Map vendorClassMap = getCompanyVendorService().findAllCatalogs().stream()
+ .collect(Collectors.toMap(VendorCatalog::getId, v -> v));
- Map vendorClassMap = getCompanyVendorService().findAllCatalogs().stream().collect(Collectors.toMap(VendorCatalog::getId, v -> v));
controller.catalogColumn.setCellValueFactory(param -> Bindings.createStringBinding(() -> {
SimpleObjectProperty catalog = param.getValue().getCatalog();
VendorCatalog vendorCatalog = catalog.get();
@@ -98,8 +102,7 @@ public class CompanyVendorManagerSkin
return vendorCatalog.getName();
}
}, param.getValue().getCatalog()));
-
-
+
controller.typeColumn.setCellValueFactory(param -> param.getValue().getType().map(type -> {
VendorTypeLocal local = vendorTypeLocals.stream().filter(v -> v.getType() == type).findFirst().orElse(null);
if (local == null) {
@@ -110,21 +113,13 @@ public class CompanyVendorManagerSkin
}));
controller.purchaseColumn.setCellValueFactory(param -> param.getValue().getPurchase());
-
- controller.companyColumn.setCellValueFactory(param -> param.getValue().getCompany().map(v -> {
- if (v == null) {
- return "-";
- }
- if (!Hibernate.isInitialized(v)) {
- v = companyService.findById(v.getId());
- param.getValue().getCompany().set(v);
- }
- return v.getName();
- }));
+ controller.companyColumn.setCellValueFactory(param -> param.getValue().getCompany());
+ controller.companyColumn.setCellFactory(param-> new CompanyTableCell<>(getCompanyService()));
controller.developDateColumn.setCellValueFactory(param -> param.getValue().getDevelopDate());
controller.pathColumn.setCellValueFactory(param -> param.getValue().getPath());
- controller.createdColumn.setCellValueFactory(param -> param.getValue().getCreated().map(MyDateTimeUtils::format));
+ controller.createdColumn
+ .setCellValueFactory(param -> param.getValue().getCreated().map(MyDateTimeUtils::format));
Platform.runLater(() -> {
getTableView().getSortOrder().add(controller.idColumn);
diff --git a/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorManagerWindowController.java b/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorManagerWindowController.java
index 4c9dd83..2ae39ba 100644
--- a/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorManagerWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorManagerWindowController.java
@@ -1,5 +1,6 @@
package com.ecep.contract.manager.ds.vendor.controller;
+import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.vendor.controller.approved_list.CompanyVendorApprovedListManagerWindowController;
import com.ecep.contract.manager.ds.vendor.controller.group.VendorGroupManagerWindowController;
@@ -40,7 +41,7 @@ public class CompanyVendorManagerWindowController
// columns
public TableColumn idColumn;
- public TableColumn companyColumn;
+ public TableColumn companyColumn;
public TableColumn codeColumn;
public TableColumn catalogColumn;
public TableColumn typeColumn;
diff --git a/src/main/java/com/ecep/contract/manager/ui/AbstEntityBasedTabSkin.java b/src/main/java/com/ecep/contract/manager/ui/AbstEntityBasedTabSkin.java
index 20325c7..1b9548a 100644
--- a/src/main/java/com/ecep/contract/manager/ui/AbstEntityBasedTabSkin.java
+++ b/src/main/java/com/ecep/contract/manager/ui/AbstEntityBasedTabSkin.java
@@ -25,8 +25,7 @@ import java.time.LocalDateTime;
import java.util.concurrent.CompletableFuture;
public abstract class AbstEntityBasedTabSkin, T extends IdentityEntity, V extends IdentityViewModel>
- extends AbstGenericTabSkin
- implements TabSkin {
+ extends AbstGenericTabSkin {
private static final Logger logger = LoggerFactory.getLogger(AbstEntityBasedTabSkin.class);
@Setter
diff --git a/src/main/java/com/ecep/contract/manager/ui/AbstEntityManagerSkin.java b/src/main/java/com/ecep/contract/manager/ui/AbstEntityManagerSkin.java
index 8b1acd0..9f44f6e 100644
--- a/src/main/java/com/ecep/contract/manager/ui/AbstEntityManagerSkin.java
+++ b/src/main/java/com/ecep/contract/manager/ui/AbstEntityManagerSkin.java
@@ -1,31 +1,5 @@
package com.ecep.contract.manager.ui;
-import com.ecep.contract.manager.ds.other.model.IdentityEntity;
-import com.ecep.contract.manager.ds.other.vo.IdentityViewModel;
-import com.ecep.contract.manager.util.TableViewUtils;
-import com.ecep.contract.manager.util.UITools;
-import javafx.application.Platform;
-import javafx.beans.property.Property;
-import javafx.beans.property.SimpleIntegerProperty;
-import javafx.collections.FXCollections;
-import javafx.collections.ObservableList;
-import javafx.event.ActionEvent;
-import javafx.geometry.Bounds;
-import javafx.scene.Node;
-import javafx.scene.control.*;
-import javafx.scene.input.KeyCode;
-import javafx.scene.input.KeyCodeCombination;
-import javafx.scene.input.KeyCombination;
-import javafx.scene.input.KeyEvent;
-import javafx.util.converter.NumberStringConverter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
-import org.springframework.data.jpa.domain.Specification;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -34,18 +8,46 @@ import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+
+import com.ecep.contract.manager.ds.other.model.IdentityEntity;
+import com.ecep.contract.manager.ds.other.vo.IdentityViewModel;
+import com.ecep.contract.manager.util.TableViewUtils;
+import com.ecep.contract.manager.util.UITools;
+
+import javafx.application.Platform;
+import javafx.beans.property.Property;
+import javafx.beans.property.SimpleIntegerProperty;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.geometry.Bounds;
+import javafx.scene.Node;
+import javafx.scene.control.ContextMenu;
+import javafx.scene.control.MenuItem;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextField;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyCodeCombination;
+import javafx.scene.input.KeyCombination;
+import javafx.scene.input.KeyEvent;
+import javafx.util.converter.NumberStringConverter;
+
/**
* @param Entity 的类型
* @param Entity 对应的ViewModel
* @param Skin 的类型
* @param
*/
-public abstract class AbstEntityManagerSkin<
- T extends IdentityEntity,
- TV extends IdentityViewModel,
- Skin extends ManagerSkin,
- C extends AbstManagerWindowController
- > implements ManagerSkin, TableTabSkin, EditableEntityTableTabSkin {
+public abstract class AbstEntityManagerSkin, Skin extends ManagerSkin, C extends AbstManagerWindowController>
+ implements ManagerSkin, TableTabSkin, EditableEntityTableTabSkin {
private static final Logger logger = LoggerFactory.getLogger(AbstEntityManagerSkin.class);
/**
*
@@ -80,7 +82,6 @@ public abstract class AbstEntityManagerSkin<
UITools.showExceptionAndWait(message, ex);
}
-
public Locale getLocale() {
return controller.getLocale();
}
@@ -102,7 +103,6 @@ public abstract class AbstEntityManagerSkin<
});
}
-
private void onShown() {
if (loadedFuture == null) {
loadedFuture = runAsync(() -> {
@@ -135,7 +135,7 @@ public abstract class AbstEntityManagerSkin<
});
loadTableDataSet(true);
- }).exceptionally(this::handleException);
+ });
}
}
@@ -156,14 +156,23 @@ public abstract class AbstEntityManagerSkin<
currentPageNumber.addListener(this::currentPageNumberListener);
//
- controller.currentPageNumberField.textProperty().bindBidirectional(currentPageNumber, new NumberStringConverter());
+ controller.currentPageNumberField.textProperty().bindBidirectional(currentPageNumber,
+ new NumberStringConverter());
controller.previousPageBtn.setOnAction(event -> {
- currentPageable = currentPageable.previous();
- loadTableDataSet(true);
+ try {
+ currentPageable = currentPageable.previous();
+ loadTableDataSet(true);
+ } catch (Exception e) {
+ logger.warn("previous page error", e);
+ }
});
controller.nextPageBtn.setOnAction(event -> {
- currentPageable = currentPageable.next();
- loadTableDataSet(true);
+ try {
+ currentPageable = currentPageable.next();
+ loadTableDataSet(true);
+ } catch (Exception e) {
+ logger.warn("next page error", e);
+ }
});
}
@@ -275,7 +284,6 @@ public abstract class AbstEntityManagerSkin<
return false;
}
-
protected T createNewEntity(TV row) {
ViewModelService service = getViewModelService();
if (service != null) {
@@ -341,7 +349,7 @@ public abstract class AbstEntityManagerSkin<
try {
_reloadTableData().thenRun(() -> loadTableDataSetFuture = null).exceptionally(this::handleException);
} catch (Exception ex) {
- handleException(ex);
+ handleException("加载表格数据出错", ex);
}
}, reloadNow ? 0 : 618, TimeUnit.MILLISECONDS);
}
@@ -370,13 +378,26 @@ public abstract class AbstEntityManagerSkin<
}
protected void updateTableDataSet(List models) {
+ long timeMillis = System.currentTimeMillis();
dataSet.setAll(models);
+ long timeCost = System.currentTimeMillis() - timeMillis;
+ if (logger.isDebugEnabled()) {
+ logger.debug("update table dataSet cost: {} ms", timeCost);
+ }
}
protected List loadTableData() {
Specification spec = getSpecification();
ViewModelService service = getViewModelService();
+ long timeMillis = System.currentTimeMillis();
Page page = service.findAll(spec, getPageable());
+ long timeCost = System.currentTimeMillis() - timeMillis;
+ if (logger.isDebugEnabled()) {
+ logger.debug("load table data cost: {} ms", timeCost);
+ }
+ if (timeCost > 1000) {
+ controller.setStatus("used " + timeCost + " ms");
+ }
updateFooter(page);
return page.map(service::from).toList();
}
@@ -416,7 +437,8 @@ public abstract class AbstEntityManagerSkin<
controller.previousPageBtn.setDisable(!page.hasPrevious());
controller.nextPageBtn.setDisable(!page.hasNext());
currentPageNumber.set(page.getNumber());
- controller.setStatus((page.getNumber() + 1) + "/" + page.getTotalPages() + " 页, 总 " + page.getTotalElements() + " 条");
+ controller.setStatus(
+ (page.getNumber() + 1) + "/" + page.getTotalPages() + " 页, 总 " + page.getTotalElements() + " 条");
});
}
diff --git a/src/main/java/com/ecep/contract/manager/ui/AbstEntityTableTabSkin.java b/src/main/java/com/ecep/contract/manager/ui/AbstEntityTableTabSkin.java
index 744113d..e42e356 100644
--- a/src/main/java/com/ecep/contract/manager/ui/AbstEntityTableTabSkin.java
+++ b/src/main/java/com/ecep/contract/manager/ui/AbstEntityTableTabSkin.java
@@ -1,27 +1,5 @@
package com.ecep.contract.manager.ui;
-import com.ecep.contract.manager.ds.other.model.IdentityEntity;
-import com.ecep.contract.manager.ds.other.service.EmployeeService;
-import com.ecep.contract.manager.ds.other.vo.IdentityViewModel;
-import com.ecep.contract.manager.ui.util.LocalDateFieldTableCell;
-import com.ecep.contract.manager.ui.util.LocalDateTimeTableCell;
-import com.ecep.contract.manager.util.TableViewUtils;
-import com.ecep.contract.manager.util.UITools;
-import javafx.application.Platform;
-import javafx.beans.property.*;
-import javafx.collections.FXCollections;
-import javafx.collections.ObservableList;
-import javafx.event.ActionEvent;
-import javafx.scene.control.*;
-import javafx.scene.control.cell.TextFieldTableCell;
-import javafx.scene.input.*;
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
-import org.springframework.data.jpa.domain.Specification;
-
import java.io.File;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -31,6 +9,48 @@ import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
import java.util.function.Function;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+
+import com.ecep.contract.manager.ds.other.model.IdentityEntity;
+import com.ecep.contract.manager.ds.other.service.EmployeeService;
+import com.ecep.contract.manager.ds.other.vo.IdentityViewModel;
+import com.ecep.contract.manager.ui.util.LocalDateFieldTableCell;
+import com.ecep.contract.manager.ui.util.LocalDateTimeTableCell;
+import com.ecep.contract.manager.util.TableViewUtils;
+import com.ecep.contract.manager.util.UITools;
+
+import javafx.application.Platform;
+import javafx.beans.property.BooleanProperty;
+import javafx.beans.property.ObjectProperty;
+import javafx.beans.property.Property;
+import javafx.beans.property.SimpleBooleanProperty;
+import javafx.beans.property.SimpleObjectProperty;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.scene.control.Button;
+import javafx.scene.control.ContextMenu;
+import javafx.scene.control.MenuItem;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextField;
+import javafx.scene.control.cell.TextFieldTableCell;
+import javafx.scene.input.Clipboard;
+import javafx.scene.input.DragEvent;
+import javafx.scene.input.Dragboard;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyCodeCombination;
+import javafx.scene.input.KeyCombination;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.input.TransferMode;
+import lombok.Getter;
+import lombok.Setter;
+
/**
* 表格显示组件
*
@@ -39,16 +59,14 @@ import java.util.function.Function;
* @param 表格数据类
* @param 表格数据视图类
*/
-public abstract class AbstEntityTableTabSkin<
- C extends AbstEntityController,
+public abstract class AbstEntityTableTabSkin,
// 父数据类
K extends IdentityEntity, KV extends IdentityViewModel,
// 表格数据类
- T extends IdentityEntity, TV extends IdentityViewModel
- >
+ T extends IdentityEntity, TV extends IdentityViewModel>
extends AbstEntityBasedTabSkin
- implements TabSkin, TableOfTabSkin, EditableEntityTableTabSkin {
-
+ implements TableOfTabSkin, EditableEntityTableTabSkin {
+ private static final Logger logger = LoggerFactory.getLogger(AbstEntityTableTabSkin.class);
protected CompletableFuture loadedFuture;
protected final SimpleBooleanProperty changed = new SimpleBooleanProperty(false);
protected ObservableList dataSet = FXCollections.observableArrayList();
@@ -112,7 +130,7 @@ public abstract class AbstEntityTableTabSkin<
public Pageable getPageable() {
Sort sort = getSortByTable();
- //TODO 待完善 currentPageable
+ // TODO 待完善 currentPageable
// return currentPageable.withSort(sort);
return Pageable.unpaged(sort);
}
@@ -155,8 +173,7 @@ public abstract class AbstEntityTableTabSkin<
protected void changed(
TableColumn.CellEditEvent event,
- Function> supplier
- ) {
+ Function> supplier) {
TV row = event.getRowValue();
supplier.apply(row).setValue(event.getNewValue());
changed(row);
@@ -176,17 +193,18 @@ public abstract class AbstEntityTableTabSkin<
column.setOnEditCommit(event -> changed(event, propertyFun));
}
- protected void bindLocalDateColumn(TableColumn column, Function> propertyFun) {
+ protected void bindLocalDateColumn(TableColumn column,
+ Function> propertyFun) {
column.setCellValueFactory(param -> propertyFun.apply(param.getValue()));
column.setCellFactory(LocalDateFieldTableCell.forTableColumn());
}
- protected void bindLocalDateTimeColumn(TableColumn column, Function> propertyFun) {
+ protected void bindLocalDateTimeColumn(TableColumn column,
+ Function> propertyFun) {
column.setCellValueFactory(param -> propertyFun.apply(param.getValue()));
column.setCellFactory(param -> new LocalDateTimeTableCell<>());
}
-
@Override
public void onTabShown() {
// 当第一次显示 tab 时,初始化表格
@@ -195,7 +213,7 @@ public abstract class AbstEntityTableTabSkin<
initializeTab();
initializeTable();
loadTableDataSet();
- }).exceptionally(this::handleException);
+ });
}
}
@@ -228,7 +246,6 @@ public abstract class AbstEntityTableTabSkin<
});
}
-
@Override
public void initializeTab() {
if (searchKeyField != null) {
@@ -313,7 +330,6 @@ public abstract class AbstEntityTableTabSkin<
}
}
-
/**
* 当有东西拖动到表格上时触发
* 默认为实现任何处理
@@ -364,7 +380,6 @@ public abstract class AbstEntityTableTabSkin<
}
}
-
/**
* 当表格行被双击时触发
*
@@ -377,24 +392,27 @@ public abstract class AbstEntityTableTabSkin<
loadTableDataSet();
}
- // @SuppressWarnings("unchecked")
+ // @SuppressWarnings("unchecked")
protected TV createNewViewModel() {
ViewModelService service = getViewModelService();
return service.createNewViewModel();
-// Class> clz = getClass();
-// Method method = BeanUtils.findMethodWithMinimalParameters(clz, "loadRowData");
-// if (method == null) {
-// throw new RuntimeException(clz.getName() + " unable find loadRowData method!");
-// }
-// Class>[] types = method.getParameterTypes();
-// if (types.length == 0) {
-// throw new RuntimeException(clz.getName() + " loadRowData method need a parameter!");
-// }
-// if (types[0] == BaseViewModel.class) {
-// throw new RuntimeException(clz.getName() + " 需要继承实现 loadRowData 方法");
-// }
-// return (TV) BeanUtils.instantiateClass(types[0]);
+ // Class> clz = getClass();
+ // Method method = BeanUtils.findMethodWithMinimalParameters(clz,
+ // "loadRowData");
+ // if (method == null) {
+ // throw new RuntimeException(clz.getName() + " unable find loadRowData
+ // method!");
+ // }
+ // Class>[] types = method.getParameterTypes();
+ // if (types.length == 0) {
+ // throw new RuntimeException(clz.getName() + " loadRowData method need a
+ // parameter!");
+ // }
+ // if (types[0] == BaseViewModel.class) {
+ // throw new RuntimeException(clz.getName() + " 需要继承实现 loadRowData 方法");
+ // }
+ // return (TV) BeanUtils.instantiateClass(types[0]);
}
protected void onTableAddAction(ActionEvent event) {
@@ -461,16 +479,19 @@ public abstract class AbstEntityTableTabSkin<
protected T createNewEntity(TV row) {
return getViewModelService().createNewEntity();
-// Class> viewModelClz = row.getClass();
-// Method method = BeanUtils.findMethodWithMinimalParameters(viewModelClz, "copyTo");
-// if (method == null) {
-// throw new RuntimeException(viewModelClz.getName() + " unable find copyTo method!");
-// }
-// Class>[] types = method.getParameterTypes();
-// if (types.length == 0) {
-// throw new RuntimeException(viewModelClz.getName() + " copyTo method need a parameter!");
-// }
-// return (T) BeanUtils.instantiateClass(types[0]);
+ // Class> viewModelClz = row.getClass();
+ // Method method = BeanUtils.findMethodWithMinimalParameters(viewModelClz,
+ // "copyTo");
+ // if (method == null) {
+ // throw new RuntimeException(viewModelClz.getName() + " unable find copyTo
+ // method!");
+ // }
+ // Class>[] types = method.getParameterTypes();
+ // if (types.length == 0) {
+ // throw new RuntimeException(viewModelClz.getName() + " copyTo method need a
+ // parameter!");
+ // }
+ // return (T) BeanUtils.instantiateClass(types[0]);
}
protected void saveRow(TV row) {
@@ -495,7 +516,6 @@ public abstract class AbstEntityTableTabSkin<
return Sort.by(getTableOrders());
}
-
@Override
public void deleteRowData(T entity) {
getViewModelService().delete(entity);
diff --git a/src/main/java/com/ecep/contract/manager/ui/AbstManagerWindowController.java b/src/main/java/com/ecep/contract/manager/ui/AbstManagerWindowController.java
index 8396d4d..115a0c6 100644
--- a/src/main/java/com/ecep/contract/manager/ui/AbstManagerWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ui/AbstManagerWindowController.java
@@ -13,14 +13,19 @@ public abstract class AbstManagerWindowController {
// searcher
+ @FXML
public TextField searchKeyField;
+ @FXML
public Button searchBtn;
@FXML
public HBox footer;
// paging
+ @FXML
public Button previousPageBtn;
+ @FXML
public Button nextPageBtn;
+ @FXML
public TextField currentPageNumberField;
@Override
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
index a1294e2..216797e 100644
--- a/src/main/resources/logback.xml
+++ b/src/main/resources/logback.xml
@@ -27,7 +27,9 @@
+
+
diff --git a/src/main/resources/ui/employee/function-tab-permission.fxml b/src/main/resources/ui/employee/function-tab-permission.fxml
new file mode 100644
index 0000000..1cd3196
--- /dev/null
+++ b/src/main/resources/ui/employee/function-tab-permission.fxml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/ui/employee/function.fxml b/src/main/resources/ui/employee/function.fxml
new file mode 100644
index 0000000..9f0d69d
--- /dev/null
+++ b/src/main/resources/ui/employee/function.fxml
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/ui/employee/functions-manager.fxml b/src/main/resources/ui/employee/functions-manager.fxml
index 6599871..e1e5882 100644
--- a/src/main/resources/ui/employee/functions-manager.fxml
+++ b/src/main/resources/ui/employee/functions-manager.fxml
@@ -28,46 +28,16 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/ui/employee/roles-manager.fxml b/src/main/resources/ui/employee/roles-manager.fxml
index 8340272..764e792 100644
--- a/src/main/resources/ui/employee/roles-manager.fxml
+++ b/src/main/resources/ui/employee/roles-manager.fxml
@@ -2,7 +2,7 @@
-
+