diff --git a/src/main/java/com/zhangmeng/online/exam/ui/admin/LoginPage.java b/src/main/java/com/zhangmeng/online/exam/ui/admin/LoginPage.java
index 1f54e5d..d0d0f9e 100644
--- a/src/main/java/com/zhangmeng/online/exam/ui/admin/LoginPage.java
+++ b/src/main/java/com/zhangmeng/online/exam/ui/admin/LoginPage.java
@@ -1,13 +1,28 @@
package com.zhangmeng.online.exam.ui.admin;
+import com.alibaba.fastjson2.JSONObject;
+import com.zhangmeng.online.exam.ui.api.ApiUtils;
import com.zhangmeng.online.exam.ui.components.ExamButtonComponent;
import com.zhangmeng.online.exam.ui.components.ExamComponent;
import com.zhangmeng.online.exam.ui.components.ShortAnswerComponent;
+import com.zhangmeng.online.exam.ui.utils.AlertUtils;
+import com.zhangmeng.online.exam.ui.utils.HttpUtils;
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+import javafx.concurrent.ScheduledService;
+import javafx.concurrent.Task;
+import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import javafx.stage.Window;
+import javafx.util.Duration;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @author zm
@@ -16,24 +31,13 @@ import javafx.stage.Window;
*/
public class LoginPage extends AnchorPane {
- /**
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- */
+
+ private TextField username;
+ private PasswordField password;
+ private TextField verificationCode;
+
+ private Button button1;
+
public LoginPage() {
ColumnConstraints column1 = new ColumnConstraints();
@@ -61,60 +65,179 @@ public class LoginPage extends AnchorPane {
row2.setVgrow(Priority.SOMETIMES);
RowConstraints row3 = new RowConstraints();
- row3.setMaxHeight(238.0);
+ row3.setMaxHeight(206.0);
row3.setMinHeight(10.0);
- row3.setPrefHeight(52.0);
+ row3.setPrefHeight(47.0);
row3.setVgrow(Priority.SOMETIMES);
+ RowConstraints row4 = new RowConstraints();
+ row4.setMaxHeight(206.0);
+ row4.setMinHeight(10.0);
+ row4.setPrefHeight(47.0);
+ row4.setVgrow(Priority.SOMETIMES);
+
//
GridPane gridPane = new GridPane();
gridPane.getColumnConstraints().addAll(column1, column2);
- gridPane.getRowConstraints().addAll(row1, row2, row3);
+ gridPane.getRowConstraints().addAll(row1, row2, row3, row4);
gridPane.setLayoutX(485.0);
gridPane.setLayoutY(59.0);
- gridPane.setPrefHeight(159.0);
- gridPane.setPrefWidth(275.0);
- AnchorPane.setBottomAnchor(gridPane, 97.0);
+ gridPane.setPrefHeight(200);
+ gridPane.setPrefWidth(300);
+ AnchorPane.setBottomAnchor(gridPane, 90.0);
AnchorPane.setLeftAnchor(gridPane, 125.0);
AnchorPane.setRightAnchor(gridPane, 127.0);
AnchorPane.setTopAnchor(gridPane, 59.0);
Label label1 = new Label("账号");
Label label2 = new Label("密码");
- TextField textField1 = new TextField();
- PasswordField passwordField1 = new PasswordField();
- Button button1 = new Button("登录");
+ username = new TextField();
+ password = new PasswordField();
+ button1 = new Button("登录");
button1.setMnemonicParsing(false);
button1.setPrefHeight(23.0);
button1.setPrefWidth(178.0);
gridPane.add(label1, 0, 0);
gridPane.add(label2, 0, 1);
- gridPane.add(textField1, 1, 0);
- gridPane.add(passwordField1, 1, 1);
- gridPane.add(button1, 1, 2);
+ gridPane.add(username, 1, 0);
+ gridPane.add(password, 1, 1);
+
+ //验证码
+ ImageView imageView = new ImageView(new Image(ApiUtils.API_URL + "/verificationCode/generate"));
+ imageView.setFitHeight(30);
+ imageView.setFitWidth(100);
+ verificationCode = new TextField();
+// verificationCode.setPrefWidth(100);
+// verificationCode.setPrefHeight(23);
+
+ Label label3 = new Label("验证码");
+ gridPane.add(label3, 0, 2);
+ imageView.setOnMouseClicked(event -> {
+ imageView.setImage(new Image(ApiUtils.API_URL + "/verificationCode/generate"));
+ });
+
+ HBox hBox = new HBox(10);
+ hBox.setAlignment(Pos.CENTER);
+ hBox.getChildren().addAll(verificationCode, imageView);
+ gridPane.add(hBox, 1, 2);
+
+ gridPane.add(button1, 1, 3);
getChildren().add(gridPane);
+ username.setText("admin");
+ password.setText("123456");
+
button1.setOnAction(event -> {
-
- Scene scene = button1.getScene();
- Stage window = (Stage) scene.getWindow();
- window.close();
-
- Stage stage = new Stage();
-// IndexPage shortAnswerComponent = new IndexPage();
-
- PaperPage paperPage = new PaperPage();
- scene = new Scene(paperPage, 1280, 720);
- stage.setScene(scene);
- stage.setTitle("在线考试系统");
- stage.show();
-
-
+ login();
});
}
+ private void login() {
-}
+ //TODO 登录逻辑
+ Map params = new HashMap<>();
+ params.put("username", username.getText());
+ params.put("password", password.getText());
+ params.put("captcha", verificationCode.getText());
+ String response = HttpUtils.POST(ApiUtils.API_URL + "/login", params);
+ JSONObject jsonObject = JSONObject.parseObject(response);
+ if (jsonObject.getIntValue("code") == 2001) {
+
+ Map data = (Map) jsonObject.get("data");
+ Object token = data.get("token");
+ HttpUtils.USER_INFO.put("token",token);
+ Alert alert = AlertUtils.alert_msg(jsonObject.getString("message"));
+
+ MyScheduledService myService = new MyScheduledService();
+ //myService.setDelay(Duration.seconds(5));//延迟
+ myService.setPeriod(Duration.millis(500));//时间周期
+ myService.setRestartOnFailure(true);
+ myService.setMaximumFailureCount(4);//设置最大失败次数
+
+ myService.progressProperty().addListener(new ChangeListener() {
+ @Override
+ public void changed(ObservableValue extends Number> observable, Number oldValue, Number newValue) {
+ System.out.println("progressProperty:" + newValue.intValue());
+ }
+ });
+
+ myService.valueProperty().addListener(new ChangeListener() {
+ @Override
+ public void changed(ObservableValue extends Number> observable, Number oldValue, Number newValue) {
+ if (newValue != null){
+ System.out.println("progressProperty:" + newValue.intValue());
+ }
+ }
+ });
+
+ myService.lastValueProperty().addListener(new ChangeListener() {
+ @Override
+ public void changed(ObservableValue extends Number> observable, Number oldValue, Number newValue) {
+
+ if (newValue != null){
+ System.out.println("lastValueProperty:" + newValue.intValue());
+ if (newValue.intValue() == 3){
+ myService.cancel();
+ alert.close();
+ success();
+ }
+ }
+ }
+ });
+
+ myService.start();
+
+
+ } else {
+ AlertUtils.alert_warning(jsonObject.getString("message"));
+ }
+ }
+
+ private void success(){
+ Scene scene = button1.getScene();
+ Stage window = (Stage) scene.getWindow();
+ window.close();
+
+ Stage stage = new Stage();
+// IndexPage shortAnswerComponent = new IndexPage();
+
+ PaperPage paperPage = new PaperPage();
+ scene = new Scene(paperPage, 1280, 720);
+ stage.setScene(scene);
+ stage.setTitle("在线考试系统");
+ stage.show();
+
+ }
+
+ class MyScheduledService extends ScheduledService {
+
+ int sum = 0 ;
+
+ @Override
+ protected Task createTask() {
+
+ return new Task() {
+ @Override
+ protected Number call() throws Exception {
+ sum = sum + 1;
+
+ return sum;
+ }
+
+ @Override
+ protected void updateValue(Number value) {
+
+ super.updateValue(value);
+// System.out.println("updateValue");
+ if (value.intValue() == 10){
+ MyScheduledService.this.cancel();
+ }
+
+ }
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/zhangmeng/online/exam/ui/utils/AlertUtils.java b/src/main/java/com/zhangmeng/online/exam/ui/utils/AlertUtils.java
index e4272c3..6ea4757 100644
--- a/src/main/java/com/zhangmeng/online/exam/ui/utils/AlertUtils.java
+++ b/src/main/java/com/zhangmeng/online/exam/ui/utils/AlertUtils.java
@@ -48,20 +48,22 @@ public class AlertUtils {
/**
* 警告弹窗
*/
- public static void alert_warning(String msg) {
+ public static Alert alert_warning(String msg) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.initModality(Modality.APPLICATION_MODAL);
alert.setContentText(msg);
alert.setHeaderText(null);
alert.show();
+ return alert;
}
- public static void alert_msg(String msg) {
+ public static Alert alert_msg(String msg) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.initModality(Modality.APPLICATION_MODAL);
alert.setContentText(msg);
alert.setHeaderText(null);
alert.show();
+ return alert;
}
public static void alert(String title, Parent node, Stage primaryStage) {
diff --git a/src/main/java/com/zhangmeng/online/exam/ui/utils/HttpUtils.java b/src/main/java/com/zhangmeng/online/exam/ui/utils/HttpUtils.java
index eac0026..1f120cf 100644
--- a/src/main/java/com/zhangmeng/online/exam/ui/utils/HttpUtils.java
+++ b/src/main/java/com/zhangmeng/online/exam/ui/utils/HttpUtils.java
@@ -18,20 +18,25 @@ import java.util.Map;
*/
public class HttpUtils {
+ public static Map USER_INFO = new HashMap<>();
+
public static T GET(String url, Class clazz) {
String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8);
return JSONObject.parseObject(response, clazz);
}
public static String GET(String url) {
+ url = url + "?token=" + USER_INFO.get("token");
return HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8);
}
public static String GET(String url, Map params) {
+ params.put("token",USER_INFO.get("token"));
return HttpUtil.get(url, params);
}
public static String POST(String url, Map params) {
+ params.put("token",USER_INFO.get("token"));
return HttpUtil.post(url, params);
}
diff --git a/src/main/resources/fmxl/login.fxml b/src/main/resources/fmxl/login.fxml
index d5f1fd5..261bb81 100644
--- a/src/main/resources/fmxl/login.fxml
+++ b/src/main/resources/fmxl/login.fxml
@@ -4,6 +4,7 @@
+
@@ -11,10 +12,11 @@
-
+
-
-
+
+
+
@@ -24,10 +26,14 @@
-
-
-
+
+
+
+
+
+
+