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 0075d65..825a1fd 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 @@ -1,6 +1,7 @@ package com.zhangmeng.online.exam.ui.api; import com.zhangmeng.online.exam.ui.admin.IndexPage; +import com.zhangmeng.online.exam.ui.api.form.PaperForm; import com.zhangmeng.online.exam.ui.api.form.QuestionForm; import com.zhangmeng.online.exam.ui.api.form.RoleForm; import com.zhangmeng.online.exam.ui.api.form.UserForm; @@ -28,7 +29,7 @@ import java.util.*; */ public class ApiUtils { - public static final String API_URL = "http://localhost:8080"; + public static final String API_URL = "http://localhost:8083"; public static final int PAGE_SIZE = 25; @@ -102,6 +103,7 @@ public class ApiUtils { public static DataView getExamPaper() { DataLoad dataLoad = new PaperDataLoad(); + dataLoad.setForm(new PaperForm()); return dataLoad.loadData(PAGE_NUM,PAGE_SIZE); } diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/form/PaperForm.java b/src/main/java/com/zhangmeng/online/exam/ui/api/form/PaperForm.java new file mode 100644 index 0000000..97d4003 --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/form/PaperForm.java @@ -0,0 +1,30 @@ +package com.zhangmeng.online.exam.ui.api.form; + +import com.zhangmeng.online.exam.ui.api.form.base.Form; +import com.zhangmeng.online.exam.ui.controller.PaperEditController; +import javafx.fxml.FXMLLoader; + +import java.io.IOException; + +/** + * @author zm + * @date 2025/4/6 14:52 + * @version: 1.0 + */ +public class PaperForm extends Form { + private PaperEditController controller; + + public PaperEditController getController() { + return controller; + } + public PaperForm() { + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/paper-edit.fxml")); + this.getChildren().add(fxmlLoader.load()); + controller = fxmlLoader.getController(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + +} diff --git a/src/main/java/com/zhangmeng/online/exam/ui/components/callBack/DynamicTableComponentCallBackImpl.java b/src/main/java/com/zhangmeng/online/exam/ui/components/callBack/DynamicTableComponentCallBackImpl.java index 2fe2ee6..065096b 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/components/callBack/DynamicTableComponentCallBackImpl.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/components/callBack/DynamicTableComponentCallBackImpl.java @@ -46,7 +46,7 @@ public class DynamicTableComponentCallBackImpl implements DynamicTableComponentC // Form form = (Form) node; // form.setTableComponent(table); // AlertUtils.alert("设置", node, primaryStage); - FxUtils.alert("设置",node, primaryStage); + FxUtils.alert("设置",node, primaryStage, false); } @Override diff --git a/src/main/java/com/zhangmeng/online/exam/ui/controller/PaperEditController.java b/src/main/java/com/zhangmeng/online/exam/ui/controller/PaperEditController.java new file mode 100644 index 0000000..ca2d2bf --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/controller/PaperEditController.java @@ -0,0 +1,195 @@ +package com.zhangmeng.online.exam.ui.controller; + +import com.alibaba.fastjson2.JSONObject; +import com.zhangmeng.online.exam.ui.api.ApiUtils; +import com.zhangmeng.online.exam.ui.components.DynamicTableComponent; +import com.zhangmeng.online.exam.ui.module.QuestionType; +import com.zhangmeng.online.exam.ui.module.SubjectType; +import com.zhangmeng.online.exam.ui.service.RoleService; +import com.zhangmeng.online.exam.ui.service.SubjectService; +import com.zhangmeng.online.exam.ui.service.UserService; +import com.zhangmeng.online.exam.ui.utils.AlertUtils; +import com.zhangmeng.online.exam.ui.utils.FxUtils; +import com.zhangmeng.online.exam.ui.utils.HttpUtils; +import javafx.collections.FXCollections; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.control.*; +import javafx.scene.control.cell.CheckBoxListCell; +import javafx.scene.layout.HBox; +import javafx.stage.Stage; +import javafx.util.Callback; +import javafx.util.StringConverter; + +import java.util.HashMap; +import java.util.Map; + +import static com.zhangmeng.online.exam.ui.utils.FxUtils.FX_BEANS; + +/** + * @author zm + * @date 2025/4/6 14:58 + * @version: 1.0 + */ +public class PaperEditController { + + @FXML + public TextField nameField; + + @FXML + public TextArea descriptionTextArea; + + @FXML + public TextField scoreField; + + @FXML + public TextField passScoreField; + + @FXML + public TextField examTimeField; + + @FXML + public ComboBox statusComboBox; + + @FXML + public ComboBox subjectBox; + + @FXML + public void initialize() { + // 初始化状态下拉框 + Status status1 = new Status("启用", 1); + Status status2 = new Status("禁用", 0); + statusComboBox.getItems().addAll(status1, status2); + statusComboBox.setValue(status1); + + statusComboBox.setConverter(new StringConverter() { + @Override + public String toString(Status object) { + return object.getName(); + } + + @Override + public Status fromString(String string) { + return null; + } + }); + + statusComboBox.setCellFactory(new Callback, ListCell>() { + @Override + public ListCell call(ListView statusListView) { + return new ListCell<>() { + @Override + protected void updateItem(Status item, boolean empty) { + super.updateItem(item, empty); + if (item != null && !empty) { + HBox hBox = new HBox(); + Label label = new Label(item.getName()); + hBox.getChildren().add(label); + setGraphic(hBox); + } + } + }; + } + }); + + subjectBox.getItems().addAll(SubjectService.getALLSubjectType()); + subjectBox.getSelectionModel().selectFirst(); + subjectBox.setConverter(new StringConverter() { + @Override + public String toString(SubjectType object) { + return object.getName(); + } + + @Override + public SubjectType fromString(String string) { + return null; + } + }); + } + + @FXML + public void handleSave(ActionEvent actionEvent) { + + // 保存试卷信息 + if (nameField.getText().trim().isEmpty()) { + AlertUtils.alert_warning("试卷名称不能为空!"); + return; + } + + if (descriptionTextArea.getText().trim().isEmpty()) { + AlertUtils.alert_warning("试卷描述不能为空!"); + return; + } + + if (scoreField.getText().trim().isEmpty()) { + AlertUtils.alert_warning("总分不能为空!"); + return; + } + + if (passScoreField.getText().trim().isEmpty()) { + AlertUtils.alert_warning("及格分数不能为空!"); + return; + } + + if (examTimeField.getText().trim().isEmpty()) { + AlertUtils.alert_warning("考试时间不能为空!"); + return; + } + // 保存试卷信息 + Map params = new HashMap<>(); + params.put("token", UserService.getCurrentUser().getToken()); + params.put("name", nameField.getText().trim()); + params.put("description", descriptionTextArea.getText().trim()); + params.put("score", scoreField.getText().trim()); + params.put("passScore", passScoreField.getText().trim()); + params.put("examTime", examTimeField.getText().trim()); + params.put("status", statusComboBox.getValue().getValue()); + params.put("subjectId", subjectBox.getSelectionModel().getSelectedItem().getId()); + + String response = HttpUtils.POST(ApiUtils.API_URL + "/paper/save", params); + JSONObject jsonObject = JSONObject.parseObject(response); + if (jsonObject.getIntValue("code") == 200) { + Alert alert = AlertUtils.alert_msg("保存成功!"); + handleCancel(); + } else { + AlertUtils.alert_warning("保存失败!" + jsonObject.getString("msg")); + } + } + + @FXML + public void handleCancel() { + + Stage window = (Stage) subjectBox.getScene().getWindow(); + window.close(); + //刷新数据 + DynamicTableComponent dynamicTableComponent = FX_BEANS.get(FxUtils.Paper_DynamicTableComponent); + dynamicTableComponent.flushData(); + + } + + public static class Status { + private String name; + private int value; + + public Status(String name, int value) { + this.name = name; + this.value = value; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + } +} 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 4f734ea..e5801ed 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 @@ -1,5 +1,6 @@ package com.zhangmeng.online.exam.ui.utils; +import com.zhangmeng.online.exam.ui.api.form.PaperForm; import com.zhangmeng.online.exam.ui.api.form.QuestionForm; import com.zhangmeng.online.exam.ui.api.form.RoleForm; import com.zhangmeng.online.exam.ui.api.form.UserForm; @@ -76,6 +77,10 @@ public class FxUtils { form = new QuestionForm(); } + if (form instanceof PaperForm){ + form = new PaperForm(); + } + Scene scene = null; if (!isEdit) { scene = new Scene(form); diff --git a/src/main/resources/fxml/paper-edit.fxml b/src/main/resources/fxml/paper-edit.fxml new file mode 100644 index 0000000..8bccb6c --- /dev/null +++ b/src/main/resources/fxml/paper-edit.fxml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +