From 7a34bb898b35aa415411c87d450e1809d81dc3a2 Mon Sep 17 00:00:00 2001 From: qmstyle Date: Fri, 7 Mar 2025 18:18:50 +0800 Subject: [PATCH] =?UTF-8?q?2025=E5=B9=B43=E6=9C=887=E6=97=A518:18:39?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../online/exam/ui/api/ApiUtils.java | 73 ++++++++++++++++--- .../ui/components/DynamicTableComponent.java | 15 +++- .../online/exam/ui/layouts/SideMenu.java | 5 +- 3 files changed, 75 insertions(+), 18 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 7b05f49..65d4645 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 @@ -51,11 +51,12 @@ public class ApiUtils { return menuItems; } - public static List> getUserList(){ + public static DataView getUserList() { String userListData = HttpUtils.GET(API_URL + "/user/list"); JSONObject jsonObject = JSON.parseObject(userListData); JSONArray data = jsonObject.getJSONArray("data"); List> userMapList = new ArrayList<>(); + for (Object datum : data) { JSONObject user = (JSONObject) datum; Map userMap = new HashMap<>(); @@ -65,10 +66,10 @@ public class ApiUtils { userMap.put("手机号码", new SimpleStringProperty(user.getString("phone"))); userMapList.add(userMap); } - return userMapList; + return new DataView(Arrays.asList("序号", "用户名", "电子邮箱", "手机号码"), userMapList); } - public static List> getRoleList() { + public static DataView getRoleList() { String userListData = HttpUtils.GET(API_URL + "/role/list"); JSONObject jsonObject = JSON.parseObject(userListData); JSONArray data = jsonObject.getJSONArray("data"); @@ -77,15 +78,15 @@ public class ApiUtils { JSONObject role = (JSONObject) datum; Map roleMap = new HashMap<>(); roleMap.put("序号", new SimpleStringProperty(role.getString("id"))); - roleMap.put("角色名称",new SimpleStringProperty( role.getString("name"))); - roleMap.put("描述",new SimpleStringProperty( role.getString("desc"))); - roleMap.put("角色类型",new SimpleStringProperty( role.getString("type_name"))); + roleMap.put("角色名称", new SimpleStringProperty(role.getString("name"))); + roleMap.put("描述", new SimpleStringProperty(role.getString("desc"))); + roleMap.put("角色类型", new SimpleStringProperty(role.getString("type_name"))); roleMapList.add(roleMap); } - return roleMapList; + return new DataView(Arrays.asList("序号", "角色名称", "描述", "角色类型"), roleMapList); } - public static List> getPermissionList() { + public static DataView getPermissionList() { String userListData = HttpUtils.GET(API_URL + "/permission/list"); JSONObject jsonObject = JSON.parseObject(userListData); @@ -96,13 +97,61 @@ public class ApiUtils { JSONObject permission = (JSONObject) datum; Map userMap = new HashMap<>(); userMap.put("序号", new SimpleStringProperty(permission.getString("id"))); - userMap.put("权限名称",new SimpleStringProperty( permission.getString("name"))); - userMap.put("描述",new SimpleStringProperty( permission.getString("desc"))); - userMap.put("权限路径",new SimpleStringProperty( permission.getString("url"))); + userMap.put("权限名称", new SimpleStringProperty(permission.getString("name"))); + userMap.put("描述", new SimpleStringProperty(permission.getString("desc"))); + userMap.put("权限路径", new SimpleStringProperty(permission.getString("url"))); permissionMapList.add(userMap); } - return permissionMapList; + return new DataView(Arrays.asList("序号", "权限名称", "描述", "权限路径"), permissionMapList); } + public static DataView getQuestionList() { + String userListData = HttpUtils.GET(API_URL + "/question/list"); + JSONObject jsonObject = JSON.parseObject(userListData); + JSONArray data = jsonObject.getJSONArray("data"); + + List> questionMapList = new ArrayList<>(); + for (Object datum : data) { + JSONObject permission = (JSONObject) datum; + Map userMap = new HashMap<>(); + userMap.put("序号", new SimpleStringProperty(permission.getString("id"))); + userMap.put("权限名称", new SimpleStringProperty(permission.getString("name"))); + userMap.put("描述", new SimpleStringProperty(permission.getString("desc"))); + userMap.put("权限路径", new SimpleStringProperty(permission.getString("url"))); + questionMapList.add(userMap); + } + return new DataView(Arrays.asList("序号", "权限名称", "描述", "权限路径"), questionMapList); + } + + public static class DataView { + + private List keys; + + private List> dataList; + + public DataView(List keys, List> dataList) { + this.keys = keys; + this.dataList = dataList; + } + + public DataView() { + } + + public List getKeys() { + return keys; + } + + public void setKeys(List keys) { + this.keys = keys; + } + + public List> getDataList() { + return dataList; + } + + public void setDataList(List> dataList) { + this.dataList = dataList; + } + } } diff --git a/src/main/java/com/zhangmeng/online/exam/ui/components/DynamicTableComponent.java b/src/main/java/com/zhangmeng/online/exam/ui/components/DynamicTableComponent.java index b9171f6..efd2fce 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/components/DynamicTableComponent.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/components/DynamicTableComponent.java @@ -1,6 +1,5 @@ package com.zhangmeng.online.exam.ui.components; -import javafx.beans.property.SimpleMapProperty; import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; @@ -11,6 +10,7 @@ import javafx.scene.control.cell.TextFieldTableCell; import javafx.scene.layout.VBox; import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; /** * 动态表格 @@ -22,14 +22,21 @@ import java.util.*; public class DynamicTableComponent extends VBox { private final ObservableList> data = FXCollections.observableArrayList(); - public DynamicTableComponent(List> dataList) { + public DynamicTableComponent(List> dataList,List keys) { super(); TableView> tableView = new TableView<>(); tableView.setItems(data); + tableView.setEditable(true); tableView.prefHeightProperty().bind(this.heightProperty()); tableView.prefWidthProperty().bind(this.widthProperty()); // 动态生成列(示例字段)‌:ml-citation{ref="3,4" data="citationList"} - List columns = Arrays.asList(dataList.get(0).keySet().toArray(new String[0])); + List columns ; + if (!dataList.isEmpty()){ + columns= Arrays.asList(dataList.get(0).keySet().toArray(new String[0])); + }else { + columns=keys; + } + List finalColumns = columns; columns.forEach(col -> { TableColumn, String> column = new TableColumn<>(col); // 数据绑定‌:ml-citation{ref="1,3" data="citationList"} @@ -41,7 +48,7 @@ public class DynamicTableComponent extends VBox { row.get(col).set(event.getNewValue()); }); - column.prefWidthProperty().bind(tableView.widthProperty().divide(columns.size())); + column.prefWidthProperty().bind(tableView.widthProperty().divide(finalColumns.size())); tableView.getColumns().add(column); }); data.addAll(dataList); diff --git a/src/main/java/com/zhangmeng/online/exam/ui/layouts/SideMenu.java b/src/main/java/com/zhangmeng/online/exam/ui/layouts/SideMenu.java index a802155..9d0baaf 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/layouts/SideMenu.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/layouts/SideMenu.java @@ -127,6 +127,7 @@ public class SideMenu extends VBox { case "/user/list" -> init_table(hbox, ApiUtils.getUserList()); case "/role/list" -> init_table(hbox,ApiUtils.getRoleList()); case "/permission/list" -> init_table(hbox,ApiUtils.getPermissionList()); + case "/question/list" -> init_table(hbox,ApiUtils.getQuestionList()); } }); @@ -159,10 +160,10 @@ public class SideMenu extends VBox { } - private void init_table(HBox hbox, List> dataList) { + private void init_table(HBox hbox, ApiUtils.DataView dataView) { Scene scene = hbox.getScene(); IndexPage root = (IndexPage) scene.getRoot(); - DynamicTableComponent shortAnswerComponent = new DynamicTableComponent(dataList); + DynamicTableComponent shortAnswerComponent = new DynamicTableComponent(dataView.getDataList(), dataView.getKeys()); shortAnswerComponent.setPadding(new Insets(15)); shortAnswerComponent.prefHeightProperty().bind(root.heightProperty().subtract(15)); root.setCenter(shortAnswerComponent);