From 0e04d2fbfe6890f4ee5784eeffbb0000f2882926 Mon Sep 17 00:00:00 2001 From: qmstyle Date: Sun, 6 Apr 2025 18:18:50 +0800 Subject: [PATCH] =?UTF-8?q?2025=E5=B9=B44=E6=9C=886=E6=97=A518:18:40?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../online/exam/ui/api/ApiUtils.java | 2 +- .../online/exam/ui/api/form/UserForm.java | 134 ++---------------- .../exam/ui/api/model/AnswerDataLoad.java | 15 -- .../exam/ui/api/model/OptionDataLoad.java | 15 -- .../exam/ui/api/model/PaperDataLoad.java | 15 -- .../exam/ui/api/model/ProfessionDataLoad.java | 15 -- .../exam/ui/api/model/QuestionDataLoad.java | 2 +- .../ui/api/model/QuestionOptionDataLoad.java | 15 -- .../exam/ui/api/model/SubjectDataLoad.java | 15 -- .../exam/ui/api/model/UserDataLoad.java | 12 +- .../ui/controller/UserEditController.java | 69 ++++++--- .../zhangmeng/online/exam/ui/module/Role.java | 2 +- .../online/exam/ui/utils/FxUtils.java | 4 +- src/main/resources/fxml/user-edit.fxml | 10 +- 14 files changed, 78 insertions(+), 247 deletions(-) diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java b/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java index 825a1fd..dc7ed0d 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java @@ -65,7 +65,7 @@ public class ApiUtils { public static DataView getUserList() { DataLoad dataLoad = new UserDataLoad(); - dataLoad.setForm(new UserForm(true)); + dataLoad.setForm(new UserForm()); return dataLoad.loadData(PAGE_NUM,PAGE_SIZE); } diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/form/UserForm.java b/src/main/java/com/zhangmeng/online/exam/ui/api/form/UserForm.java index 58c2aad..bfaafd4 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/form/UserForm.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/form/UserForm.java @@ -6,6 +6,7 @@ import com.zhangmeng.online.exam.ui.api.form.base.Form; import com.zhangmeng.online.exam.ui.api.model.UserDataLoad; import com.zhangmeng.online.exam.ui.components.DynamicTableComponent; import com.zhangmeng.online.exam.ui.components.callBack.DynamicTableComponentCallBack; +import com.zhangmeng.online.exam.ui.controller.UserEditController; import javafx.beans.property.SimpleStringProperty; import javafx.collections.ObservableList; import javafx.fxml.FXMLLoader; @@ -28,142 +29,25 @@ import java.util.Map; */ public class UserForm extends Form { - private TextField username_field; - private PasswordField password_field; - private TextField phone_field; - private TextField email_field; + private UserEditController controller; - private boolean isfxml = true; - public UserForm(boolean isfxml) { - this.isfxml = isfxml; + + public UserForm() { try { FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/user-edit.fxml")); this.getChildren().add(fxmlLoader.load()); + this.controller = fxmlLoader.getController(); } catch (IOException e) { throw new RuntimeException(e); } } - public UserForm() { - - Label username_label = new Label("用户名:"); - username_label.setLayoutX(83.0); - username_label.setLayoutY(64.0); - - username_field = new TextField(); - username_field.setLayoutX(162.0); - username_field.setLayoutY(60.0); - username_field.setPrefHeight(23.0); - username_field.setPrefWidth(289.0); - username_field.setPromptText("请输入用户名"); - - password_field = new PasswordField(); - password_field.setLayoutX(162.0); - password_field.setLayoutY(117.0); - password_field.setPrefHeight(23.0); - password_field.setPrefWidth(289.0); - password_field.setPromptText("请输入密码"); - - Label password_label = new Label("密码:"); - password_label.setLayoutX(87.0); - password_label.setLayoutY(121.0); - - Label phone_label = new Label("手机号:"); - phone_label.setLayoutX(87.0); - phone_label.setLayoutY(169.0); - - phone_field = new TextField(); - phone_field.setLayoutX(162.0); - phone_field.setLayoutY(165.0); - phone_field.setPrefHeight(23.0); - phone_field.setPrefWidth(289.0); - phone_field.setPromptText("请输入手机号"); - - Label email_label = new Label("邮箱:"); - email_label.setLayoutX(87.0); - email_label.setLayoutY(224.0); - - email_field = new TextField(); - email_field.setLayoutX(162.0); - email_field.setLayoutY(220.0); - email_field.setPrefHeight(23.0); - email_field.setPrefWidth(289.0); - email_field.setPromptText("请输入邮箱"); - - Button submit_button = new Button("提交"); - submit_button.setLayoutX(263.0); - submit_button.setLayoutY(288.0); - - submit_button.setOnAction(e -> { - - DataLoad formDataLoad = new UserDataLoad(); - Map map = new HashMap<>(); - map.put("username", username_field.getText()); - map.put("password", password_field.getText()); - map.put("phone", phone_field.getText()); - map.put("email", email_field.getText()); - formDataLoad.saveForm(map); - - Stage stage = (Stage) this.getScene().getWindow(); - stage.close(); - - DynamicTableComponentCallBack callBack = getTableComponent().getCallBack(); - ObservableList> data = getTableComponent().getData(); - data.clear(); - data.addAll(callBack.flushData(1, ApiUtils.PAGE_SIZE).getDataList()); - - }); - - this.getChildren().addAll(username_label, - username_field, - password_field, - phone_label, - phone_field, - email_label, - email_field, - submit_button, - password_label); + public UserEditController getController() { + return controller; } - - public TextField getUsername_field() { - return username_field; - } - - public void setUsername_field(TextField username_field) { - this.username_field = username_field; - } - - public PasswordField getPassword_field() { - return password_field; - } - - public void setPassword_field(PasswordField password_field) { - this.password_field = password_field; - } - - public TextField getPhone_field() { - return phone_field; - } - - public void setPhone_field(TextField phone_field) { - this.phone_field = phone_field; - } - - public TextField getEmail_field() { - return email_field; - } - - public void setEmail_field(TextField email_field) { - this.email_field = email_field; - } - - public boolean isIsfxml() { - return isfxml; - } - - public void setIsfxml(boolean isfxml) { - this.isfxml = isfxml; + public void setController(UserEditController controller) { + this.controller = controller; } } diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/AnswerDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/AnswerDataLoad.java index db16610..a0bfb05 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/model/AnswerDataLoad.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/AnswerDataLoad.java @@ -93,22 +93,7 @@ public class AnswerDataLoad implements DataLoad { @Override public void editData(String id, Stage stage) { - UserForm userForm = new UserForm(); - Map map = new HashMap<>(); - map.put("id", id); - String result = HttpUtils.GET(ApiUtils.API_URL + "/user/getUser", map); - JSONObject jsonObject = JSON.parseObject(result); - JSONObject data = jsonObject.getJSONObject("data"); - String username = data.getString("username"); - userForm.getUsername_field().setText(username); - String email = data.getString("email"); - userForm.getEmail_field().setText(email); - String phone = data.getString("phone"); - userForm.getPhone_field().setText(phone); - String password = data.getString("password"); - userForm.getPassword_field().setText(password); - AlertUtils.alert("编辑用户信息", (Parent) userForm, stage); } @Override diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/OptionDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/OptionDataLoad.java index 8f21ecd..f61fc31 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/model/OptionDataLoad.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/OptionDataLoad.java @@ -88,22 +88,7 @@ public class OptionDataLoad implements DataLoad { @Override public void editData(String id, Stage stage) { - UserForm userForm = new UserForm(); - Map map = new HashMap<>(); - map.put("id", id); - String result = HttpUtils.GET(ApiUtils.API_URL + "/user/getUser", map); - JSONObject jsonObject = JSON.parseObject(result); - JSONObject data = jsonObject.getJSONObject("data"); - String username = data.getString("username"); - userForm.getUsername_field().setText(username); - String email = data.getString("email"); - userForm.getEmail_field().setText(email); - String phone = data.getString("phone"); - userForm.getPhone_field().setText(phone); - String password = data.getString("password"); - userForm.getPassword_field().setText(password); - AlertUtils.alert("编辑用户信息", (Parent) userForm, stage); } diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/PaperDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/PaperDataLoad.java index 8dac96c..df2ecb1 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/model/PaperDataLoad.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/PaperDataLoad.java @@ -100,22 +100,7 @@ public class PaperDataLoad implements DataLoad { @Override public void editData(String id, Stage stage) { - UserForm userForm = new UserForm(); - Map map = new HashMap<>(); - map.put("id", id); - String result = HttpUtils.GET(ApiUtils.API_URL + "/user/getUser", map); - JSONObject jsonObject = JSON.parseObject(result); - JSONObject data = jsonObject.getJSONObject("data"); - String username = data.getString("username"); - userForm.getUsername_field().setText(username); - String email = data.getString("email"); - userForm.getEmail_field().setText(email); - String phone = data.getString("phone"); - userForm.getPhone_field().setText(phone); - String password = data.getString("password"); - userForm.getPassword_field().setText(password); - AlertUtils.alert("编辑用户信息", (Parent) userForm, stage); } @Override diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/ProfessionDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/ProfessionDataLoad.java index aef0d42..07e8ed0 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/model/ProfessionDataLoad.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/ProfessionDataLoad.java @@ -87,22 +87,7 @@ public class ProfessionDataLoad implements DataLoad { @Override public void editData(String id, Stage stage) { - UserForm userForm = new UserForm(true); - Map map = new HashMap<>(); - map.put("id", id); - String result = HttpUtils.GET(ApiUtils.API_URL + "/profession/getProfession", map); - JSONObject jsonObject = JSON.parseObject(result); - JSONObject data = jsonObject.getJSONObject("data"); - String username = data.getString("username"); - userForm.getUsername_field().setText(username); - String email = data.getString("email"); - userForm.getEmail_field().setText(email); - String phone = data.getString("phone"); - userForm.getPhone_field().setText(phone); - String password = data.getString("password"); - userForm.getPassword_field().setText(password); - AlertUtils.alert("编辑用户信息", (Parent) userForm, stage); } @Override diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionDataLoad.java index 4dd8b53..0491a94 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionDataLoad.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionDataLoad.java @@ -126,7 +126,7 @@ public class QuestionDataLoad implements DataLoad { questionMap.put("explanation", explanation); controller.setQuestion(questionMap); - FxUtils.alert("编辑用户信息", questionForm, stage,true); + FxUtils.alert("编辑问题", questionForm, stage,true); } @Override diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionOptionDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionOptionDataLoad.java index fd59643..4bbe764 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionOptionDataLoad.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionOptionDataLoad.java @@ -89,22 +89,7 @@ public class QuestionOptionDataLoad implements DataLoad { @Override public void editData(String id, Stage stage) { - UserForm userForm = new UserForm(); - Map map = new HashMap<>(); - map.put("id", id); - String result = HttpUtils.GET(ApiUtils.API_URL + "/user/getUser", map); - JSONObject jsonObject = JSON.parseObject(result); - JSONObject data = jsonObject.getJSONObject("data"); - String username = data.getString("username"); - userForm.getUsername_field().setText(username); - String email = data.getString("email"); - userForm.getEmail_field().setText(email); - String phone = data.getString("phone"); - userForm.getPhone_field().setText(phone); - String password = data.getString("password"); - userForm.getPassword_field().setText(password); - AlertUtils.alert("编辑用户信息", (Parent) userForm, stage); } @Override diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/SubjectDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/SubjectDataLoad.java index 74a4d86..060bd9b 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/model/SubjectDataLoad.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/SubjectDataLoad.java @@ -88,22 +88,7 @@ public class SubjectDataLoad implements DataLoad { @Override public void editData(String id,Stage stage) { - UserForm userForm = new UserForm(); - Map map = new HashMap<>(); - map.put("id", id); - String result = HttpUtils.GET(ApiUtils.API_URL + "/subject/getUser", map); - JSONObject jsonObject = JSON.parseObject(result); - JSONObject data = jsonObject.getJSONObject("data"); - String username = data.getString("username"); - userForm.getUsername_field().setText(username); - String email = data.getString("email"); - userForm.getEmail_field().setText(email); - String phone = data.getString("phone"); - userForm.getPhone_field().setText(phone); - String password = data.getString("password"); - userForm.getPassword_field().setText(password); - AlertUtils.alert("编辑用户信息", (Parent) userForm, stage); } @Override diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/UserDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/UserDataLoad.java index 272a74e..347ea5c 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/model/UserDataLoad.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/UserDataLoad.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.zhangmeng.online.exam.ui.api.DataLoad; import com.zhangmeng.online.exam.ui.api.form.UserForm; +import com.zhangmeng.online.exam.ui.controller.UserEditController; import com.zhangmeng.online.exam.ui.utils.AlertUtils; import com.zhangmeng.online.exam.ui.utils.HttpUtils; import javafx.beans.property.SimpleStringProperty; @@ -94,7 +95,8 @@ public class UserDataLoad implements DataLoad { @Override public void editData(String id,Stage stage) { - UserForm userForm = new UserForm(true); + UserForm userForm = new UserForm(); + UserEditController controller = userForm.getController(); Map map = new HashMap<>(); map.put("id", id); @@ -102,13 +104,13 @@ public class UserDataLoad implements DataLoad { JSONObject jsonObject = JSON.parseObject(result); JSONObject data = jsonObject.getJSONObject("data"); String username = data.getString("username"); - userForm.getUsername_field().setText(username); + controller.usernameField.setText(username); String email = data.getString("email"); - userForm.getEmail_field().setText(email); + controller.emailField.setText(email); String phone = data.getString("phone"); - userForm.getPhone_field().setText(phone); + controller.phoneField.setText(phone); String password = data.getString("password"); - userForm.getPassword_field().setText(password); + controller.passwordField.setText(password); AlertUtils.alert("编辑用户信息", (Parent) userForm, stage); } diff --git a/src/main/java/com/zhangmeng/online/exam/ui/controller/UserEditController.java b/src/main/java/com/zhangmeng/online/exam/ui/controller/UserEditController.java index b8f0b7b..1e6a558 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/controller/UserEditController.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/controller/UserEditController.java @@ -3,6 +3,8 @@ package com.zhangmeng.online.exam.ui.controller; import com.zhangmeng.online.exam.ui.module.Role; import com.zhangmeng.online.exam.ui.module.User; import com.zhangmeng.online.exam.ui.service.LogService; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.collections.transformation.FilteredList; @@ -18,6 +20,8 @@ import javafx.stage.Modality; import javafx.stage.Stage; import com.zhangmeng.online.exam.ui.service.RoleService; import com.zhangmeng.online.exam.ui.service.UserService; +import javafx.util.Callback; +import javafx.util.StringConverter; /** * @author zm @@ -26,25 +30,25 @@ import com.zhangmeng.online.exam.ui.service.UserService; */ public class UserEditController { @FXML - private TextField usernameField; + public TextField usernameField; @FXML - private TextField nameField; + public TextField phoneField; @FXML - private PasswordField passwordField; + public PasswordField passwordField; @FXML - private TextField emailField; + public TextField emailField; @FXML - private ComboBox statusComboBox; + public ComboBox statusComboBox; @FXML - private ListView roleListView; + public ListView roleListView; private User user; - private boolean saveClicked = false; + public boolean saveClicked = false; @FXML public void initialize() { @@ -54,16 +58,41 @@ public class UserEditController { // 初始化角色列表 roleListView.setItems(FXCollections.observableArrayList(RoleService.getAllRoles())); - roleListView.setCellFactory(CheckBoxListCell.forListView(role -> { - return role.selectedProperty(); - })); + + Callback, ListCell> call = CheckBoxListCell.forListView(new Callback>() { + @Override + public ObservableValue call(Role param) { + return param.selectedProperty(); + } + }, new StringConverter() { + @Override + public String toString(Role object) { + return object.getName(); + } + + @Override + public Role fromString(String string) { + return null; + } + }); + + + roleListView.setCellFactory(call); + roleListView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, Role oldValue, Role newValue) { + System.out.println("姓名:" + newValue.getName() + " 是否选择:" + newValue.isSelected()); + } + }); + + } public void setUser(User user) { this.user = user; usernameField.setText(user.getUsername()); - nameField.setText(user.getName()); + phoneField.setText(user.getPhone()); emailField.setText(user.getEmail()); statusComboBox.setValue(user.getStatus()); @@ -96,7 +125,7 @@ public class UserEditController { } // 更新基本信息 - user.setName(nameField.getText()); + user.setPhone(phoneField.getText()); user.setEmail(emailField.getText()); user.setStatus(statusComboBox.getValue()); @@ -134,16 +163,22 @@ public class UserEditController { if (usernameField.getText() == null || usernameField.getText().trim().isEmpty()) { errorMessage.append("用户名不能为空!\n"); } - if (nameField.getText() == null || nameField.getText().trim().isEmpty()) { - errorMessage.append("姓名不能为空!\n"); - } - if (user == null && (passwordField.getText() == null || passwordField.getText().trim().isEmpty())) { + + if (passwordField.getText() == null || passwordField.getText().trim().isEmpty()) { errorMessage.append("密码不能为空!\n"); } + + if (phoneField.getText() == null || phoneField.getText().trim().isEmpty()) { + errorMessage.append("手机号不能为空!\n"); + } + if (emailField.getText() == null || emailField.getText().trim().isEmpty()) { errorMessage.append("邮箱不能为空!\n"); } - if (roleListView.getItems().stream().noneMatch(Role::isSelected)) { + + Role role = roleListView.getSelectionModel().getSelectedItem(); + + if (role == null) { errorMessage.append("至少选择一个角色!\n"); } diff --git a/src/main/java/com/zhangmeng/online/exam/ui/module/Role.java b/src/main/java/com/zhangmeng/online/exam/ui/module/Role.java index 43f3745..e914295 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/module/Role.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/module/Role.java @@ -17,7 +17,7 @@ public class Role { private String description; private String status; private List permissions; - private BooleanProperty selected; + private SimpleBooleanProperty selected; public Role(int id, String name, String description, String status) { this.id = id; diff --git a/src/main/java/com/zhangmeng/online/exam/ui/utils/FxUtils.java b/src/main/java/com/zhangmeng/online/exam/ui/utils/FxUtils.java index e5801ed..1fe3445 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/utils/FxUtils.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/utils/FxUtils.java @@ -42,7 +42,7 @@ public class FxUtils { Form form = (Form) node; if (form instanceof UserForm) { - form = new UserForm(true); + form = new UserForm(); } if (form instanceof RoleForm) { form = new RoleForm(); @@ -67,7 +67,7 @@ public class FxUtils { Form form = (Form) node; if (form instanceof UserForm) { - form = new UserForm(true); + form = new UserForm(); } if (form instanceof RoleForm) { form = new RoleForm(); diff --git a/src/main/resources/fxml/user-edit.fxml b/src/main/resources/fxml/user-edit.fxml index b952334..cc2f0f7 100644 --- a/src/main/resources/fxml/user-edit.fxml +++ b/src/main/resources/fxml/user-edit.fxml @@ -20,14 +20,14 @@